jQuery通过类搜索获取元素的id

DMi*_*Min 9 jquery dom jquery-traversing

这是我的HTML:

<div id="my_box_one" class="head-div">
   <div>
       <div class="some_box">a</div>
       <div class="some_box">b</div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我想使用该div的类(".head-div")获取父div("#my_box_one")的ID

$(document).ready(function(){

$(".some_box").click(function(){
   var abc = $(this).parentsUntil(".head-div").attr("id");
   // also tried $(this).parent(".head-div") -- same effect
   alert(abc); // Shows as Undefined
});   

});
Run Code Online (Sandbox Code Playgroud)

我可以做以下事情,它会工作正常,但它似乎不对.

var abc = $(this).parent("div").parent("div").attr("id");
Run Code Online (Sandbox Code Playgroud)

Lap*_*ple 22

您可以使用.closest(selector),例如:

var abc = $(this).closest(".head-div").attr("id");
Run Code Online (Sandbox Code Playgroud)

http://api.jquery.com/closest/

.parent(selector)仅选择元素的直接父级.


lon*_*day 5

parentsUntil获取所有父元素,直到选择器匹配的元素.它不包括匹配的元素.你试图得到id介入的内容div,这显然是未定义的.

你需要使用closest,它在DOM树上,直到找到一个匹配选择器的元素,然后返回该元素:

var abc = $(this).closest(".head-div").attr("id");
Run Code Online (Sandbox Code Playgroud)

编辑:为了提高速度,但在更改标记时灵活性较低,您可以使用该parentNode属性:

var abc = this.parentNode.parentNode.id;
Run Code Online (Sandbox Code Playgroud)