【问题标题】:Is there a jQuery selector to check if a tag has any attributes?是否有一个 jQuery 选择器来检查标签是否有任何属性?
【发布时间】:2010-03-16 02:38:31
【问题描述】:

在尝试选择具有任何属性的元素时,以下会引发 jQuery 语法错误。

$("div[*]")

是否有选择器来检查标签是否有任何属性?

使用 jQuery 1.3 测试

【问题讨论】:

    标签: jquery jquery-selectors


    【解决方案1】:

    我不这么认为,但这应该可以解决问题

    $('*').filter(function(){return this.attributes.length;})
    

    反之:

    $('*').filter(function(){return !this.attributes.length;})
    

    【讨论】:

      【解决方案2】:

      您可以为无属性创建自己的选择器:

      $.expr[':'].noAttrs = function( objNode  ){
          if (objNode.attributes.length) return( true );
          return( false );
      }
      
      $("div:noAttrs")
      

      【讨论】:

        【解决方案3】:

        我接受了 Ariel Popovsky 的使用过滤器的建议,但如果我在很多地方都需要这个,我会使用 petersendidit 的创建客户选择器的建议。

        (重要的)区别是需要检查 .specified 属性。 IE 总是返回 80 多个属性。

        注意:即使这也不是 100%。有一些属性,例如 INPUT .value,是特殊情况,但由于我使用的是 DIV,因此可以忽略它们。

        $("div").filter(function()
        { 
            for (var i = 0; i < this.attributes.length; i++)
            {
                var attr = this.attributes[i];
                if (attr.specified) 
                {
                    return true;
                }
            }
            return false;
        })
        

        【讨论】:

          【解决方案4】:

          也许if($('.class').attr('*:attr').length &gt; 0)

          【讨论】:

            猜你喜欢
            • 2021-11-08
            • 2011-03-09
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-03-17
            • 2012-03-19
            • 2016-04-15
            • 2014-10-10
            相关资源
            最近更新 更多