我通常会做$('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,但我需要它做的是警告实际的父元素,而不是第一个具有这样一个id的div的父元素
你不应该有一个以上的元素具有相同的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'));
});
小提琴:http://jsfiddle.net/X5r8r/148/
它正确地给出了FOO2
http://sandbox.phpcode.eu/g/cbb12.php- 按预期提醒
FOO2
: http://jsfiddle.net/HzDUy/ - id在文档中必须是唯一的
在Firefox中,这将正确返回FOO2
。不一致是由于在多个元素上使用了相同的ID属性。这种ID属性的滥用可能会导致奇怪的行为,因为浏览器期望每个ID都是唯一的,并且可能会有不同的行为。
我将强烈建议将您的id=bar
属性更改为类,允许复制,并将导致更可预测的行为。
编辑
注意到您前面的注释,您的代码仍然使用class属性返回"FOO2"的预期结果。您的错误一定在代码的其他地方。