2012-12-12 123 views
0
var classFind= $('.frame').parent().parent().parent().parent().parent(); 
if (classfind.hasClass(".class")) { 
      return true; 
     } 

我有一個根據此路徑定位的類^ ...我怎樣才能通過dom循環以更好的代碼可讀性自動執行此過程?如果在它遇到null之前沒有找到.hasclass,那麼只需返回false。自動化父級層次結構

回答

1

你就不能與替換此...

return !!$('.frame').closest('.class').length; 

closest方法向上行進,DOM樹,直到找到給出其PARAM選擇相匹配的元素 - 然後立即停止;如果沒有找到這樣的元素,它將返回元素的空集合(它仍然是一個對象,因此它的長度應該被檢查)。而!!相同Boolean()電話 - 它不是必需的,但會使你的函數返回,而不是0/1布爾值(true/false)。

+0

感謝您的答覆,我喜歡這裏的邏輯/語法,但它是不是真的是我正在尋找已建立的現有代碼庫。 – Reaper

+0

@Reaper我看到;你可能只想得到那個元素,而不是去檢查它是否存在。在這種情況下,簡單的'$('.frame')。closest('。class')'就足夠了。 – raina77ow

1

你可以嘗試成才這樣的: VAR classFind = $最接近( 「類」);( '框架')。

+0

這是非常有用的,並與現有的代碼庫完美配合。謝謝! – Reaper

0

與最接近的功能,您將無法獲得確切的5個父母,如果是你想要的...

這個選擇會做到這一點。

function findEl() { 
    if($('.class > * > * > * > * > .frame').length > 0) { 
     return true; 
    } 
    return false; 
} 

測試它: http://jsfiddle.net/S5juG/1/

看看孩子選擇: http://api.jquery.com/child-selector/