我无法理解如何做到这一点?
给定一个充满锚标签的页面,我只想选择具有CSS属性display:block
的那些元素。
我想我可以使用jQuery循环(警告伪代码!)
var myarray;
$('a').each(function(arg1, arg2) {
if ($(arg2).css('display')=='block')
myarray.push(arg2);
}
但是有没有更简单的方法?
答案 0 :(得分:9)
您可以将filter
与函数一起用作参数。
$('a').filter(function (index) {
return $(this).css("display") === "block";
})
答案 1 :(得分:6)
另一种方法是使用jQuery的属性选择器:
$("a[style$='display: block;']")
答案 2 :(得分:3)
如果你想把它作为一个jquery工具(如果你经常使用它)。您可以通过将以下代码添加到项目中来扩展“:”选择器:
$.extend($.expr[':'], {
"block": function(a, i, m) {
return $(a).css("display") == "block";
}
});
然后你可以通过这样说来选择所有的块锚:
var res = $("a:block");
请参阅此处的示例:http://jsfiddle.net/zFatd/7/
[注意]正如您在示例中看到的,如果在自然块元素(即div)上使用“:block”,它仍将返回true。 (换句话说,“div:block”是真的,除非你特意给它以外的东西)
答案 3 :(得分:0)
我认为显示属性是通过具有某个类或其他属性来设置的。这应该通过使用该属性使选择更简单。此外,如果其他锚点被隐藏,您可以使用$('a:visible')
选择器显示可见的锚点。
答案 4 :(得分:0)
或者更简单:
$("a:visible")
答案 5 :(得分:-1)
//隐藏css显示为block(慢)的所有项目:
$('*').filter(function(index) {
return $(this).css('display')=='block';
}).hide();