jQuery选择器帮助

时间:2010-07-06 21:57:11

标签: jquery

我有一个大型HTML文档,大致有这种结构:

<div id="a">
    <!-- more html code here -->
    <span id="title">...</span>
    <!-- more html code here -->
</div>
<div id="b">
    <!-- more html code here -->
    <span id="title">...</span>
    <!-- more html code here -->
</div>
...
...
<div id="z">
    <!-- more html code here -->
    <span id="title">...</span>
    <!-- more html code here -->
</div>    

请注意,外部DIV具有唯一的ID(“a”,“b”,...,“z”),但内部SPAN具有非唯一的ID(“标题”)。

例如,要选择DIV“q”中的SPAN,我尝试使用它:

$("#q").find("#title"); 

这在FF和Chrome上运行得很快,但find()方法需要很长时间才能在IE8(和IE7)中执行。还有其他方法可以做到这一点吗?

如果我能提供任何进一步的信息,请告诉我。

3 个答案:

答案 0 :(得分:8)

您应该更改标记以使用<span>元素的类而不是ID,因为ID必须是唯一的。

<div id="a">
    <!-- more html code here -->
    <span class="title">...</span>
    <!-- more html code here -->
</div>
<div id="b">
    <!-- more html code here -->
    <span class="title">...</span>
    <!-- more html code here -->
</div>
...
...
<div id="z">
    <!-- more html code here -->
    <span class="title">...</span>
    <!-- more html code here -->
</div> 

然后:

$("#q").find(".title");

如果我没记错的话,IE尤其会遇到非唯一ID问题。将代码更改为上面可能会为您提供帮助。

答案 1 :(得分:2)

正如其他人所说,代码无效。但是,如果您坚持使用它,您应该能够正确选择它。如果没有运行测试,我不确定这对你尝试的其他方法有多高效:

$("#b span[id=title]");

答案 2 :(得分:0)

这样的东西
$("#q").find("span").each(function() {
    if($(this).attr("id") == "title") {
        $(this).css('color','red');
    }
});

这适用于IE / FF