Jquery – 使用display:block选择所有锚标签
我无法理解如何做到这一点?
给定一个充满锚标记的页面,我只想选择具有CSS属性display:block
那些元素。
我想我可以使用jQuery循环(警告伪代码!)
var myarray; $('a').each(function(arg1, arg2) { if ($(arg2).css('display')=='block') myarray.push(arg2); }
但是,有没有更简单的方法?
您可以使用带有函数的filter
作为参数。
$('a').filter(function (index) { return $(this).css("display") === "block"; })
另一种方法是使用jQuery的属性选择器:
$("a[style$='display: block;']")
如果你想把它作为一个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”是真的,除非你特意给它以外的东西)
我假设display属性是通过具有某个类或其他属性来设置的。 这应该通过使用该属性使选择更简单。 此外,如果其他锚点被隐藏,您可以使用$('a:visible')
选择器显示可见的锚点。
或者更简单:
$("a:visible")
//隐藏css显示为块的所有项目(慢):
$('*').filter(function(index) { return $(this).css('display')=='block'; }).hide();