JQuery选择器中的嵌套ID

时间:2011-07-12 13:50:14

标签: jquery css internet-explorer

我正在尝试更改嵌套在一个名为blink3的div中的href:

$('#blink3 #backLink').attr('href',"#item5");

html代码如下:

<div style="float:left;text-align:center;" id="blink3">
<a href="#item4" class="panel" id="backLink">
<div class="divBack"></div></a>
</div>

适用于所有浏览器 - NOT IE 7 ,我无法弄清楚为什么,不会更改href。

这是IE 7的错误吗? JQuery的?我的代码有什么问题吗?

任何解决方案?

4 个答案:

答案 0 :(得分:20)

Nick Craver(omg,你去过哪里?)已在评论中说明了这一点。创建像#id #id之类的选择器是完全没有意义的,因为根据定义,ID必须在DOM中是唯一的。

看起来您违反了该规则,因此,jQuery可能会选择错误的节点。

您应该将您的“反向链接”id替换为classes并转到选择器

$('#blink3 .backLink');

答案 1 :(得分:4)

我在问题中看不到ID的重复,即使我的所有ID都是唯一的,我也有同样的问题。想要执行嵌套ID选择器的一个完全正确的理由是当且仅当它是特定父级的子元素时才检索元素。我通过拖放UI和树节点来解决这个问题。虽然不是选择器,但这是我过去使用的:

$("#parentId").find("#childId")

答案 2 :(得分:3)

ID应该在页面中是唯一的。正如Nick暗示的那样,您应该只有一个ID为backlink的ID。所以$('#backlink')的选择器本身就足够了。如果您有多个ID为backlink的ID,那么您的HTML就错了,您应该修改它。

答案 3 :(得分:0)

使用id搜索嵌套元素就像连接 id选择器一样简单,例如:

$('#selector_modal #modal-title')

在这种情况下,我们正在搜索ID为selector_modal的模态,并在其内部的 h4 元素为ID为modal-title的模态。

非常简单。