我通常会执行$('ChildID')。parent()。attr('id'),但这只会获得带有该id的第一个div。
<div id="FOO1">
<div id="bar"></div>
<div id="bar"></div>
<div id="bar"></div>
</div>
<div id="FOO2">
<div id="bar" onClick="alert($(this).parent().attr('id'));"></div>
</div>
那会警告FOO1,但是我需要它做的是警告实际的父母,而不是第一个具有这种身份的div的父母。
答案 0 :(得分:2)
你不应该有多个具有相同id的元素...另外,如果你正在使用jquery,你为什么使用内联javascript?
HTML
<div id="FOO1">
<div class="bar"></div>
<div class="bar"></div>
<div class="bar"></div>
</div>
<div id="FOO2">
<div id="foo" class="bar">click me</div>
</div>
JS
$("#foo").click(function(){
alert($(this).parent().attr('id'));
});
答案 1 :(得分:1)
它正确地给了我FOO2
答案 2 :(得分:0)
FOO2
:http://jsfiddle.net/HzDUy/ 答案 3 :(得分:0)
在Firefox中,这会正确返回FOO2
。您的不一致是因为您在多个元素上使用相同的ID属性。滥用ID属性可能会导致奇怪的行为,因为浏览器期望每个ID都是唯一的,并且可能采取不同的行为。
我高度建议将您的id=bar
属性更改为允许重复的类,并且会产生更可预测的行为。
修改
注意到您之前的评论后,您的代码仍会使用class属性返回“FOO2”的预期结果。您的错误必须在您的代码中的其他位置。