我使用closest() 有什么问题吗?

发布于 2024-09-27 17:42:53 字数 1348 浏览 3 评论 0 原文

我有一组嵌套的 DIV,我需要从内盒中找到每个外盒。根据 jQuery APIclosest() 方法获取与选择器匹配的第一个祖先元素。所以我尝试了这个:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css"><!--
div{
    margin: 1em;
    padding: em;
    border: 1px solid black;
}
--></style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript"><!--
jQuery(function($){
    $(".direccion-html").closest("div").css({borderColor: "red"});
});
//--></script>
</head>
<body>

<div>
    <div class="direccion-html">Foo</div>
</div>
 <div>
    <div class="direccion-html">Bar</div>
</div>

</body>
</html>

但是,我的closest()选择器正在获取元素本身,而不是它的任何祖先。我做错了什么?这一定是一个明显的错误,但我无法理解它......

更新:

我根据尼克的回答编写了这个:

jQuery(function($){
    $(".direccion-html").each(function(){
        $(this).parents("div:first").css({borderColor: "red"});
    });
});

I have a set of nested DIV's and I need to find each outer box from the inner box. According to jQuery API, the closest() method gets the first ancestor element that matches the selector. So I've tried this:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title></title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css"><!--
div{
    margin: 1em;
    padding: em;
    border: 1px solid black;
}
--></style>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script type="text/javascript"><!--
jQuery(function($){
    $(".direccion-html").closest("div").css({borderColor: "red"});
});
//--></script>
</head>
<body>

<div>
    <div class="direccion-html">Foo</div>
</div>
 <div>
    <div class="direccion-html">Bar</div>
</div>

</body>
</html>

However, my closest() selector is fetching the element itself, not any of its ancestors. What am I doing wrong? It must be an obvious error but I can't get it...

Update:

I've composed this from Nick's answer:

jQuery(function($){
    $(".direccion-html").each(function(){
        $(this).parents("div:first").css({borderColor: "red"});
    });
});

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

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

发布评论

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

评论(1

暖风昔人 2024-10-04 17:42:53

.closest() 从当前元素开始,如果匹配则为最接近的。如果您想要最近的元素,请使用 .parents()< /code> 具有相同的选择器和 :first,就像这样:

jQuery(function($){
    $(".direccion-html").parents("div:first").css({borderColor: "red"});
});

您可以在这里测试。或者,适用于许多元素的替代路线:

jQuery(function($){
    $(".direccion-html").parent().closest("div").css({borderColor: "red"});
});

在此处测试该版本

.closest() starts with the current element, if it's matches then that's the closest. If you want the nearest that's not the element, use .parents() with the same selector and :first, like this:

jQuery(function($){
    $(".direccion-html").parents("div:first").css({borderColor: "red"});
});

You can test it out here. Or, an alternatively route that works for many elements:

jQuery(function($){
    $(".direccion-html").parent().closest("div").css({borderColor: "red"});
});

Test that version here.

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