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

发布于 2024-11-04 09:26:44 字数 671 浏览 3 评论 0原文

这是我的 html :

<div id="my_box_one" class="head-div">
   <div>
       <div class="some_box">a</div>
       <div class="some_box">b</div>
    </div>
</div>

我想使用该 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
});   

});

我可以执行以下操作,它会正常工作,但它不会'看来是对的。

var abc = $(this).parent("div").parent("div").attr("id");

This is my html :

<div id="my_box_one" class="head-div">
   <div>
       <div class="some_box">a</div>
       <div class="some_box">b</div>
    </div>
</div>

I want to get the ID of the parent div("#my_box_one") using the class of that div(".head-div")

$(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
});   

});

I can do the following and it will work okay, but it doesn't seem right.

var abc = $(this).parent("div").parent("div").attr("id");

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

凉风有信 2024-11-11 09:26:44

您可以使用 .closest( 选择器 ),例如:

var abc = $(this).closest(".head-div").attr("id");

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

.parent( 选择器 ) 仅选择元素的直接父元素。

You can use .closest( selector ), for example:

var abc = $(this).closest(".head-div").attr("id");

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

.parent( selector ) selects only immediate parent of the element.

猫腻 2024-11-11 09:26:44

parentsUntil 获取所有父元素,直到选择器匹配为止。它不包括匹配的元素。您正在尝试获取中间 divid,这显然是未定义的。

您需要使用 closest,它会沿着 DOM 树向上查找,直到找到与选择器匹配的元素,然后仅返回该元素:

var abc = $(this).closest(".head-div").attr("id");

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

var abc = this.parentNode.parentNode.id;

parentsUntil gets all the parent elements until the one matched by the selector. It does not include the element matched. You're trying to get the id of the intervening div, which is obviously undefined.

You need to use closest, which goes up the DOM tree until it finds an element matching the selector, then returns only that element:

var abc = $(this).closest(".head-div").attr("id");

Edit: for extra speed, but less flexibility in the event that you change your markup, you could use the parentNode property:

var abc = this.parentNode.parentNode.id;
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文