jQuery没有在HTML中找到所有预期的锚链接

时间:2011-02-04 11:56:04

标签: jquery jquery-selectors

我正在使用jQueryPad尝试一些JavaScript而且我被卡住了。鉴于我有以下HTML代码段:

<TABLE style="BORDER-COLLAPSE: collapse" id=phMain_Questions class=GridView border=1 rules=all cellSpacing=0><TBODY>
<TR class=GridViewHeader>
<TH scope=col>&nbsp;</TH>
<TH scope=col>&nbsp;</TH></TR>
<TR class=GridViewRow>
<TD><A id=hlQuestionDetails href="javascript:AddQuestionWindow_Open(3, 39, 'False');">This is a test question</A> </TD>
<TD><A href='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$phMain$gvQuestions$ctl02$ctl00", "", true, "", "", false, true))'>Remove</A> </TD></TR>
<TR class="GridViewRow GridViewRowAlt">
<TD><A id=hlQuestionDetails href="javascript:AddQuestionWindow_Open(3, 40, 'False');">This is an option question.</A> </TD>
<TD><A href='javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions("ctl00$phMain$gvQuestions$ctl03$ctl00", "", true, "", "", false, true))'>Remove</A> </TD></TR></TBODY></TABLE>

我想要的是挑选a属性为id的所有hlQuestionDetails代码。我的捅是:

var links = $("a#hlQuestionDetails");
alert($(links).length);

找到的a代码的数量为1,但正如您在HTML中看到的那样,实际上有2个a代码具有该名称。

有人可以指出我在这里做错了,因为我无法弄清楚为什么jQuery会离开其中一个a标签。

编辑:

关于评论,我看到了问题。 HTML是由ASP.NET gridview控件生成的。所以相反,我应该使用类属性? 干杯。 雅各

5 个答案:

答案 0 :(得分:2)

ID 必须在HTML中是唯一的,并且ID选择器映射到document.getElementById,它返回带有该ID的第一个匹配元素 - 而是为每个元素添加class,并使用类选择器:

var links = $("a.hlQuestionDetails"); 

答案 1 :(得分:2)

属性ID应该是唯一元素的标识符。你应该使用class属性。

答案 2 :(得分:1)

ID必须在HTML文档中是唯一的(因此 ID )。如果有多个具有相同ID的元素,则大多数浏览器仅返回第一个元素。而是使用类

<A class="hlQuestionDetails" ...>This is a test question</A>

并使用类选择器检索元素:

var links = $("a.hlQuestionDetails");

答案 3 :(得分:1)

id应该是html页面中的唯一标识符。这就是为什么getElementById(...)只返回1个元素。我猜jQuery也是如此。请尝试使用属性和选择器:

<a href=".." class="hlQuestionDetails">...</a>
<a href=".." class="hlQuestionDetails">...</a>
<a href=".." class="hlQuestionDetails">...</a>

alert($('a.hlQuestionDetails').length)

答案 4 :(得分:1)

标记的ID应该是唯一的,并且应该在引号内。如果您想要定位多个标签,请使用虚拟课程,即“问题”,然后使用$('.Question')定位您的标签。