Javascript 筛选出jQuery结果集中具有特定类的父级(在任何级别)的所有元素

Javascript 筛选出jQuery结果集中具有特定类的父级(在任何级别)的所有元素,javascript,jquery,jquery-ui,dom,jquery-selectors,Javascript,Jquery,Jquery Ui,Dom,Jquery Selectors,我试图在整个SPA中将一些jQueryUI功能应用于元素,但是我在忽略某个父元素中包含的元素时遇到了问题。实际上,我不确定jQuery是否能满足我现在的要求 相关代码的位: function initializeControls($container) { var $context; if ($container != undefined) $context = $container; else $context = $("html");

我试图在整个SPA中将一些jQueryUI功能应用于元素,但是我在忽略某个父元素中包含的元素时遇到了问题。实际上,我不确定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
中的所有元素,其中没有父元素、第一个父元素或其他元素具有
。没有控件

这听起来很简单,但我似乎无法实现这一点。我尝试了
.find()
.filter()
.remove()
的不同组合。。。但它似乎从来都不能完全满足我的需要

任何提示?

可以在
过滤器()中使用
最近的()

closest()
检查元素本身,所有祖先可以在
filter()中使用
closest()

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

我的建议是:

jQuery.expr[':'].parents=function(a,i,m){
返回jQuery(a).parents(m[3]).length<1&&!jQuery(a).is(m[3]);
};
$context.filter(“:父项(.no控件)”)
我的建议是:

jQuery.expr[':'].parents=function(a,i,m){
返回jQuery(a).parents(m[3]).length<1&&!jQuery(a).is(m[3]);
};
$context.filter(“:父项(.no控件)”)

没有考虑过使用
最近的()
,因为我以前在使用它时遇到过问题,但也许我没有正确使用它。问题-为什么使用
.length
?它起作用了,但我很好奇它是如何起作用的。我没有考虑过使用
最近的()
,因为我以前在使用它时遇到过问题,但也许我没有正确地使用它。问题-为什么
.length
?它起作用了,但我很好奇它是如何起作用的。
var $filteredCollection = $context.filter(function(){
  return !$(this).closest('.no-controls').length;
});