2016-01-14 45 views
0

我試圖將一些jQueryUI功能應用於我的SPA中的所有元素,但是我無法省略包含的元素在某個父母身上。我不確定jQuery是否可以做我現在要求的。篩選出具有某個類的父級(在任何級別)的jQuery結果集中的所有元素

相關的代碼位:

function initializeControls($container) { 
    var $context; 

    if ($container != undefined) 
     $context = $container; 
    else 
     $context = $("html"); 

    $context = //$context, but ignoring all .no-controls elements and ALL children 

    //do stuff... 
} 

簡單地說,我想在$context所有元素,其中沒有父元素,首先家長或其他方式,有.no-controls類。

聽起來很簡單,但我似乎無法得到這個工作。我已經嘗試過.find(),.filter(),.remove() ......的不同組合,但它似乎從未像我所需要的那樣做。

任何提示?

回答

2

可以使用closest()filter()

var $filteredCollection = $context.filter(function(){ 
    return !$(this).closest('.no-controls').length; 
}); 

closest()檢查元素本身和所有祖先

+0

沒有使用'認爲最接近()'因爲我遇到了問題過去,但也許我沒有正確使用它。 – Kehlan

+0

問題 - 爲什麼'.length'?它的工作,但我很好奇如何。 – Kehlan

0

我的建議是:

jQuery.expr[':'].parents = function(a,i,m){ 
    return jQuery(a).parents(m[3]).length < 1 && !jQuery(a).is(m[3]); 
}; 



$context.filter(':parents(.no-controls)') 
相關問題