jQuery获取*确切*父id



我通常会做$('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

  1. 按预期提醒FOO2: http://jsfiddle.net/HzDUy/
  2. id在文档中必须是唯一的

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

我将强烈建议将您的id=bar属性更改为类,允许复制,并将导致更可预测的行为。


编辑

注意到您前面的注释,您的代码仍然使用class属性返回"FOO2"的预期结果。您的错误一定在代码的其他地方。

最新更新