[Функция] closest(selector)
Раздел "Traversing"
данный метод позволяет получить первый элемент, соответствующий селектору, поиск начинается с текущего элемента и передвигается по структуре DOM вверх.
Параметры
closest(selector)
1.3
selector: строка, содержащая выражение с селектором, по которому вновь происходит поиск элемента.
closest(selector,[context])
1.4
selector: строка, содержащая выражение с селектором, по которому вновь происходит поиск элемента
context :элемент внутри которого может быть найлен элемент, указанный в пераметре selector.Если данный параметр не был указан, то будет использоваться контекст jQuery.
Описание
Данная функция работает при первой проверке текущего элемента, если он подходит утсановленному выражению, в таком случае функция вернёт сам элемент. Если не подходит, фукнция будет продолжать проходить вверх по документу, от родителя к родителю, пока элемент не будет найден элемент соответсвующий обозначенному выражению. Если нет подходящих элементов будет возвращено none. Функция особенно полезна при передаче события.
Примеры
Пример:
Поиск первого подходящего элемента, соответствующего селектору, указанному в выражении, путём передвижениея вверх по структуре DOM.
"HTML"
<div class="yetparent"> <div class="parent"> <div class="first"> <div class="last"> </div> </div> </div> </div>
"CSS"
.yetparent { width:300px; height:300px; margin: 3px; padding: 3px; background: blue; } .parent{ width:200px; height:200px; margin: 3px; padding: 3px; background: #EEEEEE; } .first { width:100px; height:100px;background: yellow; } .last { width:50px; height:50px;background: green; }
"Живой пример jQuery"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <link href="http://test-drupal.ru/themes/slyweb/css/jqueryiframe.css" rel="stylesheet" type="text/css"/> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script> <script> $(document).ready(function(){ $('.first').closest('.yetparent') .css('background-color', 'red'); }); </script> </head> <body class="iframe"> <div class="yetparent"> <div class="parent"> <div class="first"> <div class="last"> </div> </div> </div> </div> </body> </html> <style> .yetparent { width:300px; height:300px; margin: 3px; padding: 3px; background: blue; } .parent{ width:200px; height:200px; margin: 3px; padding: 3px; background: #EEEEEE; } .first { width:100px; height:100px;background: yellow; } .last { width:50px; height:50px;background: green; } </style>
Пример:
Поиск первого подходящего элемента соответствующего селектору, указанному в выражении, путём передвижением вверх по структуре DOM.
"jQuery"
var close = $("li:first").closest(["ul", "body"]); $.each(close, function(i){ $("li").eq(i).html( this.selector + ": " + this.elem.nodeName ); });
"HTML"
<div class="yetparent"> <div class="parent"> <div class="first"> <div class="last"> </div> </div> </div> </div>
"CSS"
.yetparent { width:300px; height:300px; margin: 3px; padding: 3px; background: blue; } .parent{ width:200px; height:200px; margin: 3px; padding: 3px; background: #EEEEEE; } .first { width:100px; height:100px;background: yellow; } .last { width:50px; height:50px;background: green; }
"Живой пример jQuery"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <link href="http://test-drupal.ru/themes/slyweb/css/jqueryiframe.css" rel="stylesheet" type="text/css"/> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.0/jquery.min.js"></script> <script> $(document).ready(function(){ var close = $("li:first").closest(["ul", "body"]); $.each(close, function(i){ $("li").eq(i).html( this.selector + ": " + this.elem.nodeName ); }); }); </script> </head> <body class="iframe"> <div class="yetparent"> <div class="parent"> <div class="first"> <div class="last"> </div> </div> </div> </div> </body> </html> <style> .yetparent { width:300px; height:300px; margin: 3px; padding: 3px; background: blue; } .parent{ width:200px; height:200px; margin: 3px; padding: 3px; background: #EEEEEE; } .first { width:100px; height:100px;background: yellow; } .last { width:50px; height:50px;background: green; } </style>
Версия jQuery 1.4.2
Документ создан 2010-08-21