jQuery选择器无法通过ID找到我的元素

时间:2012-01-11 18:02:48

标签: jquery jquery-selectors element

我还是jQuery的新手!在我的旧网站上测试它以测试它的功能。我甚至无法运行一个简单的jQuery脚本,而且非常令人尴尬。请帮帮我们!

出于某种原因,我无法通过id获取jQuery选择器来查找元素。这是代码

 $(document).ready(function () {
        if (jQuery) {
            alert("jQuery working");
        } else {
            alert("jQuery not working");
        }

        $('#TextBox4').keyup(function () {
            alert("KEYUP FUNCTION WORKENGGG");
            var password = jQuery('#TextBox3').val();
            var cfmPassword = jQuery('#TextBox4').val();
            check_password_match(password, cfmPassword);
        });
    });

这是我的ASP html代码。

<asp:TextBox ID="TextBox4" runat="server" BackColor="#181818" ForeColor="White" 
                        TextMode="Password" ToolTip="Password">Password</asp:TextBox>`

<asp:TextBox ID="TextBox3" runat="server" BackColor="#181818" ForeColor="White" 
                        TextMode="Password" ToolTip="Password" Height="22px">Password</asp:TextBox>`

3 个答案:

答案 0 :(得分:3)

试试这个:     $('#<%=TextBox4.ClientID %>')

在客户端,asp.net控件的id与你在aspx页面中给出的id不同。

答案 1 :(得分:1)

HTML元素的ID与ASP控件的ID不匹配。原因是ASP.NET控件可以是命名控件,它充当ID命名空间,允许多个控件具有相同的ID但不同的ClientID。最终结果是ClientID是您应该在JQuery中搜索的内容。即$('#<%# TextBox4.ClientID %>')将返回您要检索的JQuery元素。

答案 2 :(得分:0)

我找到了一种最简单的方法来快速检查jQuery是否发现你的元素是使用类似的东西:

$("#TextBox4").css("border","solid 1px red");

这样,当你的页面加载你的给定元素时,应该用红色突出显示。然后,您可以继续了解真正的代码,知道选择器正在运行。

假设您的警报已经弹出并且您确实安装了jQuery,我建议您检查一下您的实际来源。也就是说,浏览到相关页面并查看实际html的呈现方式。

因为你似乎在使用asp标签,(我认为某些微软.NET的味道?),意识到在渲染页面的时候,输出中的实际html标签看起来与你编码的行非常不同。查看视图源并检查文本框实际呈现的内容。您可能会发现它是<textarea><input>标记。查看id是否已更改。我相信Microsoft有一种方法可以将id或其他变量附加到您提供的ID中。你可能会发现真正的代码jQuery使用你的选择器看起来像:

<input type="text" id="TextBox4_123124" ....

或类似的东西。在这种情况下,您将必须查看id是否始终以相同的方式更改,否则,您可能必须使用Microsoft的jQuery实现 - 如果有的话。

要真正尝试你的jQuery选择器,尝试在纯HTML中从头开始编写一个html文本元素,看看它是否适合你,然后继续解密微软自动生成的html。