如何在使用jQuery和ASP.NET用户控件时处理元素ID

Lor*_*nzo 2 asp.net jquery user-controls name-mangling name-matching

我在ASP.NET中有一些用户控件,我使用的只是HTML,也就是说,没有任何代码隐藏.

我有一个控件,我有一个具有固定ID的元素,我用一些jQuery客户端脚本指向它.例如:

<div id="slider-section"></div>

<script type="text/javascript" language="javascript">
    $(document).ready(function () {
        var slider = $('#slider-section');
        // ... do something with the jQuery Object
    });
</script>
Run Code Online (Sandbox Code Playgroud)

这非常好,没有任何问题.但是这有副作用.事实上,如果我在我的页面上添加两个相同用户控件的实例,我将有两个具有相同ID的元素.

您认为哪种方法可以处理这种情况?

谢谢

小智 5

Asp.net控制器在客户端呈现时,会创建不同的ID,例如:

你定义一个文本框:

<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
Run Code Online (Sandbox Code Playgroud)

如果你检查页面的源代码,你会注意到文本框ID将是这样的:

id="{GUID}_Textbox1"
Run Code Online (Sandbox Code Playgroud)

所以你需要做的是使用一个选择器来找到ID的结尾,如下所示:

<div id="slider-section"></div>

    <script type="text/javascript" language="javascript">
        $(document).ready(function () {      
            var slider = $('input[id$='TextBox1']').{youroptions};
            // ... do something with the jQuery Object
        });
    </script>
Run Code Online (Sandbox Code Playgroud)

查看文档:http://api.jquery.com/category/selectors/

请享用 ;)