如何在jQuery中按CSS样式进行选择?

如何在jQuery中按CSS样式进行选择?,jquery,css,jquery-selectors,Jquery,Css,Jquery Selectors,我试图找到所有具有CSS样式的父元素display:none。但我似乎无法让它发挥作用。以下是我得到的: var $parents = $(...).parents("[css=display:none]"); 如果您希望实际的显示:无(不仅仅可能包含在另一个显示:none;)中),您可以使用和获取这些父项,如下所示: var $parents = $(...).parents().filter(function() { return $(this).css

我试图找到所有具有CSS样式的父元素
display:none
。但我似乎无法让它发挥作用。以下是我得到的:

var $parents = $(...).parents("[css=display:none]");

如果您希望实际
的显示:无
(不仅仅可能包含在另一个
显示:none;
)中),您可以使用和获取这些父项,如下所示:

var $parents = $(...).parents().filter(function() {
                  return $(this).css('display') == 'none';
               });
这将获取父对象,然后对其进行过滤,以仅获取
display:none在特定的家长身上。

是实现目标的一种非常简单直接的方法。这可能也是表现最好的方法。但是,为了完整性和方便性(如果您经常这样做),也可以创建您自己的选择器:

$.expr[':'].css = function(obj, index, meta, stack) {
    var args = meta[3].split(/\s*=\s*/);
    return $(obj).css(args[0]) == args[1];
}

// Then we can use our custom selector, like so:
$("#myElement").parents(":css(display=none)").show();
例如-

有关创建自定义选择器的详细信息,请参见:


$(文档).ready(函数(){
$('a').parents('div[style*=“display:none”],[style*=“display:none”]).show();
});
aaa
bbb
ccc
你很接近:

$(...).parents('[style*="display: none"]');
注意:这会对元素属性值进行子字符串搜索,因此不如上面显示的
$(this).css(…)
过滤器解决方案好

这个

$(...).parents('[style*="display: none"]');