如何在jQuery中选择CSS样式?
我正在尝试查找具有CSS样式display:none
所有父元素display:none
。 我似乎无法让它工作。 这是我得到的:
var $parents = $(...).parents("[css=display:none]");
如果你想要实际 display: none;
的那些display: none;
(不仅可能包含在另一个display: none;
),您可以使用.filter()
和.css()
来获取这些父项,如下所示:
var $parents = $(...).parents().filter(function() { return $(this).css('display') == 'none'; });
这会得到父母,然后过滤它们只得到display: none;
的那些display: none;
在那个特定的父母。
@ Nick的解决方案是实现目标的一种非常简单直接的方法。 它也可能是表现最好的方法。 但是,为了完整性和便利性(如果你这么做的话),也可以创建自己的选择器:
$.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();
示例 – http://jsfiddle.net/V8CQr/ 。
有关创建自定义选择器的更多信息,请访问:
http://www.jameswiseman.com/blog/2010/04/19/creating-a-jquery-custom-selector/
bbb test
你很亲密:
$(...).parents('[style*="display: none"]');
注意:这会对元素属性值进行子字符串搜索,因此它不如上面显示的$(this).css(...)
filter解决方案好。
文档 。