Что не так с моим использованием closest ()? - PullRequest
0 голосов
/ 18 октября 2010

У меня есть набор вложенных DIV, и мне нужно найти каждую внешнюю коробку из внутренней коробки.Согласно jQuery API , метод 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>

Однако мой селектор closest () выбирает сам элемент, а не его предков.Что я делаю неправильно?Это должно быть очевидная ошибка, но я не могу ее получить ...

Обновление:

Я написал это из ответа Ника:

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

1 Ответ

2 голосов
/ 18 октября 2010

.closest() начинается с текущего элемента, если он совпадает, то это самый близкий элемент. Если вам нужен ближайший элемент , а не , используйте .parents() с тем же селектором и :first, например:

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

Вы можете проверить это здесь . Или альтернативный маршрут, который работает для многих элементов:

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

Проверьте эту версию здесь .

...