jQuery get * exact * parent id

时间:2011-08-04 23:44:11

标签: jquery parent

我通常会执行$('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的父母。

4 个答案:

答案 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'));
});

小提琴:http://jsfiddle.net/X5r8r/148/

答案 1 :(得分:1)

它正确地给了我FOO2

http://sandbox.phpcode.eu/g/cbb12.php

答案 2 :(得分:0)

  1. 按预期提醒FOO2http://jsfiddle.net/HzDUy/
  2. ID必须在文档中唯一

答案 3 :(得分:0)

在Firefox中,这会正确返回FOO2。您的不一致是因为您在多个元素上使用相同的ID属性。滥用ID属性可能会导致奇怪的行为,因为浏览器期望每个ID都是唯一的,并且可能采取不同的行为。

高度建议将您的id=bar属性更改为允许重复的类,并且会产生更可预测的行为。


修改

注意到您之前的评论后,您的代码仍会使用class属性返回“FOO2”的预期结果。您的错误必须在您的代码中的其他位置。