返回值:jQueryclosest(expr,[con]|obj|ele)

概述

jQuery 1.3新增。从元素本身开始,逐级向上级元素匹配,并返回最先匹配的元素。。

closest會首先檢查當前元素是否匹配,如果匹配則直接返回元素本身。如果不匹配則向上查找父元素,一層一層往上,直到找到匹配選擇器的元素。如果什麽都沒找到則返回一個空的jQuery對象。

closest和parents的主要區別是:1,前者從當前元素開始匹配尋找,後者從父元素開始匹配尋找;2,前者逐級向上查找,直到發現匹配的元素後就停止了,後者一直向上查找直到根元素,然後把這些元素放進一個臨時集合中,再用給定的選擇器表達式去過濾;3,前者返回0或1個元素,後者可能包含0個,1個,或者多個元素。

closest對于處理事件委托非常有用。

參數

expr String,ArrayV1.3

用以过滤元素的表达式。jQuery 1.4开始,也可以传递一个字符串数组,用于查找多个元素。

expr,[context] StringV1.4

expr:用以過濾子元素的表達式

context:DOM元素在其中一個匹配的元素可以被發現。如果沒有上下文在當時的情況下通過了jQuery設置將被使用。

jQuery object objectV1.6

一個用于匹配元素的jQuery對象

element DOMElementV1.6

一個用于匹配元素的DOM元素。

示例

描述:

展示如何使用clostest查找多個元素

HTML 代码:
<ul><li></li><li></li></ul>
jQuery 代码:
$("li:first").closest(["ul", "body"]);
結果:
[ul, body]

描述:

展示如何使用clostest來完成事件委托。

HTML 代码:
<ul>

    <li><b>Click me!</b></li>

    <li>You can also <b>Click me!</b></li>

</ul>
jQuery 代码:
$(document).bind("click", function (e) {

    $(e.target).closest("li").toggleClass("hilight");

});