jquery 的用户控件的多个实例

Multiple instances of user controls with jquery

我在一个页面中使用了多个用户控件实例。 Jquery 仅影响第一个用户控件和所有其他用户控件 "first user control" 设计更改。

请问我该如何解决?

这是我的用户控件:

Jquery

 $(document).ready(function () {

        if ($(".SubCompanyTypes").is(":visible")) {
            $(".MainCompanyTypes").css("width", "240px");
            $(".SubCompanyTypes").css("width", "96px");
        }

        else
        {
            $(".MainCompanyTypes").css("width", "70px");
            $(".SubCompanyTypes").css("width", "96px");
        }

    });




 <asp:DropDownList ID="ddlMainCompanyTypes" runat="server" Width="342px"  CssClass="MainCompanyTypes"
                    OnSelectedIndexChanged="ddlMainCompanyTypes_SelectedIndexChanged"
                    AutoPostBack="true">
                    <asp:ListItem Text="-Select-" Value="" />
                </asp:DropDownList>

   <asp:DropDownList ID="ddlSubCompanyTypes" runat="server" Width="300px" Visible="false"  CssClass="SubCompanyTypes"
                    AutoPostBack="true" 
OnSelectedIndexChanged="ddlSubCompanyTypes_SelectedIndexChanged">
                </asp:DropDownList>

您可以使用 .each() 方法来完成此操作。请参考:https://api.jquery.com/each/

试试这个:

$(document).ready(function () {
$(".SubCompanyTypes").each(function(){
    if ($(this).is(":visible")) {
           // $(".MainCompanyTypes").css("width", "240px");
           // for .MainCompanyTypes check the previous control and apply css
             $(this).prev('.MainCompanyTypes').css("width", "240px");
             $(this).css("width", "96px");
        }
        else
        {
           // $(".MainCompanyTypes").css("width", "70px");
              $(this).prev('.MainCompanyTypes').css("width", "70px");
              $(this).css("width", "96px");
        }

   });
});