我对nearest()的使用有什么问题?

时间:2010-10-18 09:34:51

标签: jquery closest

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

<!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>

但是,我的nearest()选择器是获取元素本身,而不是它的任何祖先。我究竟做错了什么?这肯定是一个明显的错误,但我无法得到它......

更新

我是从尼克的回答中写出来的:

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

1 个答案:

答案 0 :(得分:2)

.closest()从当前元素开始,如果它匹配则那么它是最接近的元素。如果您想要最近的元素,请使用.parents()和相同的选择器:first,如下所示:

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

You can test it out here。或者,适用于许多元素的替代路线:

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

Test that version here