过滤掉jQuery结果集中具有父类(在任何级别)具有特定类的所有元素

时间:2016-01-14 00:10:58

标签: javascript jquery jquery-ui dom jquery-selectors

我正在尝试将一些jQueryUI功能应用于整个SPA中的元素,但是我在省略某个父级中包含的元素时遇到了麻烦。我现在不确定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 父元素,第一个父元素或其他元素具有.no-controls类。

这听起来很简单,但我似乎无法让它发挥作用。我尝试了.find().filter().remove()的不同组合......但它似乎永远不会完全符合我的需要。

任何提示?

2 个答案:

答案 0 :(得分:2)

可以在closest()

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

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

答案 1 :(得分: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)')