【问题标题】:Jquery - select all anchor tags with display:blockJquery - 选择所有带有显示的锚标签:块
【发布时间】:2014-10-23 18:46:31
【问题描述】:

我不知道该怎么做?

给定一个充满锚标签的页面,我只想选择具有 CSS 属性 display:block 的那些元素。

我想我可以用 jQuery 循环来做到这一点(警告伪代码!)

var myarray;
$('a').each(function(arg1, arg2) { 
    if ($(arg2).css('display')=='block')
    myarray.push(arg2);
}

但是没有更简单的方法吗?

【问题讨论】:

标签: jquery jquery-selectors


【解决方案1】:

您可以将filter 与函数一起用作参数。

$('a').filter(function (index) {
                  return $(this).css("display") === "block";
              })

【讨论】:

    【解决方案2】:

    另一种方法是使用 jQuery 的属性选择器:

    $("a[style$='display: block;']")
    

    【讨论】:

      【解决方案3】:

      如果你想把它作为一个 jquery 工具(如果你经常使用它)。您可以通过将以下代码添加到您的项目来扩展“:”选择器:

      $.extend($.expr[':'], {
          "block": function(a, i, m) {
              return $(a).css("display") == "block";
          }
      });
      

      然后你可以通过这样说来选择所有块锚:

      var res = $("a:block");
      

      在此处查看示例:http://jsfiddle.net/zFatd/7/

      [NOTE] 如您在示例中所见,如果您在自然块元素(即 div)上使用“:block”,它仍然会返回 true。 (换句话说,“div:block”是真的,除非你特别给它块以外的东西)

      【讨论】:

        【解决方案4】:

        我会假设显示属性是通过具有某个类或其他属性来设置的。这应该通过使用该属性使选择更简单。此外,如果隐藏了其他锚点,您可以使用 $('a:visible') 选择器显示可见的锚点。

        【讨论】:

          【解决方案5】:

          或者更简单:

          $("a:visible")
          

          【讨论】:

            【解决方案6】:

            //隐藏所有带有css的项目显示为块(慢):

            $('*').filter(function(index) {
              return $(this).css('display')=='block';
            }).hide();
            

            【讨论】:

            • 这和约瑟夫的一样,除了选择器不是按问题的,而且它隐藏了那些也不是每个问题的元素。
            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-01-10
            相关资源
            最近更新 更多