我有一个大型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)中执行。还有其他方法可以做到这一点吗?
如果我能提供任何进一步的信息,请告诉我。
答案 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