2012-11-26 86 views
3

是否有內置的jQuery方法,允許找到最接近另一個元素的DOM元素?按最近我的意思 - 最小長度的相對路徑(例如XPath)從一個到另一個。jquery最近的元素DOM中的某處(模糊搜索)

請考慮以下示例(來自Twitter Bootstrap的投遞箱)。有下拉圖標 - 元素.JS-ACTIONS和一組鏈接 - 元素.JS-DELETE,當其中一個鏈接點擊下拉圖標上的進度條應啓用。

<div class='btn-group'> 
    <a href='#' class='btn dropdown-toggle JS-ACTIONS' data-toggle='dropdown'> 
    <i class='icon-cog'></i> 
    <span class="caret"></span> 
    </a> 
    <ul class='dropdown-menu pull-right'> 
    <li><a href='#' class='JS-DELETE'>Delete</a></li> 
    </ul> 
</div> 

一種方式做到這一點,使用類似

$(element.currentTarget).parent().parent().find('.JS-ACTIONS').showProgress()

但我想的JavaScript從DOM結構independet,像

$(element.currentTarget).nearest('.JS-ACTIONS').showProgress()

是有jQuery中的這種方法嗎?

UPDATE

的jQuery closest方法都沒有工作,它搜索在父母而已,它不會在兄弟姐妹和父母的其他孩子的搜索。

+0

說真的,你猜對了'.nearest()',但是不能在Google上找到'.closest()'? – adeneo

+2

'.closest'只在這裏與名稱有關,jQuery喜歡保持名稱短,所以它不被稱爲'.closestItselfOrAnyParent',這是'最接近'實際上並且與OP的問題本身沒有關係 – Esailija

回答

3

您可能希望closest()

對於組中的每一個元素,獲取通過測試元件本身和DOM樹向上遍歷通過其 祖先 選擇相匹配的第一個元素。

$(element.currentTarget).closest('.JS-ACTIONS').showProgress() 
+0

是不是「最接近的」只在父母身邊進行搜索,而不會進入父母的其他孩子? –

+1

我認爲這是正確的。如果你想通過父母或兄弟姐妹最近,你可能需要自定義的東西。 – Cymen

2

您需要使用closest()它給你匹配的元素在祖先層次結構中的首次亮相。

$(element.currentTarget).closest('.JS-ACTIONS')