【问题标题】:problem with masterpage and jquery母版页和 jquery 的问题
【发布时间】:2010-12-08 12:40:10
【问题描述】:

我有一个 MasterPage,在它的内容部分中我添加了一个 FORM 元素。 访问该页面时,我的所有控件都被重命名,因为 FORM 是 runat=server。 因此在 jquery 中选择时,甚至表单也被重命名了

我该如何解决这个问题?

谢谢

【问题讨论】:

    标签: c# javascript asp.net jquery master-pages


    【解决方案1】:

    对于母版页,所有元素都会将 ct100__etc 附加到元素的 ID。这是一个功能,因为它是一个命名容器。通常,解决它的方法是使用如下语法:

    $("#<%= button.ClientID %>").click(..);
    

    访问较长的 ID,或依靠 CSS 类来识别元素。另一个技巧是用 DIV HTML 元素包装表单的某些部分,并为其指定一个 ID。

    HTH。

    【讨论】:

      【解决方案2】:

      你不能,这是 .Net 的行为。您可以做的是调整您的 jquery 使用以合并您正在使用的控件的 ClientID。最简单的方法是将某种翻译变量注入到脚本头部的某个地方。

      <script language="javascript">
          var myControl1 = '<%=myControl1.ClientID %>';
      </script>
      

      然后您可以使用 myControl1 作为字符串变量,以更易读的方式将客户端 ID 注入到您的 jquery 调用中。

      【讨论】:

      • 在此之前,我有 FORM 将内容部分包装在另一个 FORM 中,它没有任何问题
      • @oshafran - 我不太明白你在评论中的意思。
      【解决方案3】:

      在这里查看这篇文章

      http://john-sheehan.com/blog/custom-jquery-selector-for-aspnet-webforms/

      解释得很清楚。诀窍是使用 ClientId

      【讨论】:

        【解决方案4】:

        除了许多其他答案中建议的.ClientID 方法外,您还可以使用jQuery 的endswith 选择器。

        eg:选择id以“myid”结尾的元素(eg ctl001_form1_myid)

        $('[id$="myid"]');
        

        或者如果您使用.net 4,您可以设置ClientIdMode="false" 以防止重命名。

        【讨论】:

          【解决方案5】:

          您可以为此使用Control.ClientID。类似的东西

          $("#<%= yourelement.ClientID %>")
          

          【讨论】:

          • 我不希望它重命名我的对象
          • 你不能这样做。这是默认行为。
          【解决方案6】:

          你也可以创建一个 CSSCLASS 然后通过 $('.classname') 访问

          <asp:TextBox id="tb4" Text="Hello World!" cssclass="txtboxtb4" runat="server" />
          
          
          alert($('.txtboxtb4').val());
          

          【讨论】:

            【解决方案7】:

            另一种方法是将控件放在 span 标签中。

            <span id="txt">
                <asp:TextBox ID="txt" runat="server"></asp:TextBox>
            </span>
            

            你可以在 jQuery 中选择这样的元素。

            $('#txt > input').val('Hello world');
            

            但我的方式是,选择以选择器结尾的元素。

            $('input[id$="txt"]').val('Hello world');
            

            适用于我的案例。希望有所帮助。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2022-07-06
              • 2016-12-15
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多