JQuery选择器中的嵌套ID

Nin*_*aNa 5 css jquery internet-explorer

我试图改变嵌套在一个名为blink3的div中的href:

$('#blink3 #backLink').attr('href',"#item5");
Run Code Online (Sandbox Code Playgroud)

html代码如下:

<div style="float:left;text-align:center;" id="blink3">
<a href="#item4" class="panel" id="backLink">
<div class="divBack"></div></a>
</div>
Run Code Online (Sandbox Code Playgroud)

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

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

有解决方案吗

jAn*_*ndy 20

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

看起来你打破了这个规则,因此,jQuery可能会选择一个错误的节点.

你应该替换你的"反向链接" id,classes并选择像

$('#blink3 .backLink');
Run Code Online (Sandbox Code Playgroud)


Lou*_*ouD 5

我在问题中没有看到任何重复的 ID,即使我的所有 ID 都是唯一的,我也有同样的问题。想要使用嵌套 ID 选择器的一个完全有效的原因是当且仅当它是特定父级的子级时才检索元素。我已经通过拖放 UI 以及树节点遇到了这个问题。虽然不是选择器,但这是我过去使用的:

$("#parentId").find("#childId")
Run Code Online (Sandbox Code Playgroud)