jQuery:选择具有一些属性集的所有p元素

时间:2010-11-17 17:21:56

标签: jquery jquery-selectors css-selectors

我需要一个jquery选择器来获取所有具有某些属性集的p元素,无论值是什么,无论属性名称如何。

XPath相关表达式是:

"//p[@*]"

4 个答案:

答案 0 :(得分:7)

如果您说您希望<p>元素至少设置一个内联属性,则可以执行以下操作:

示例: http://jsfiddle.net/ZRPv4/

var pWithAttrs = $('p').filter(function() {
    return this.attributes.length;
});

这将为您提供一组<p>元素,这些元素至少包含一个内联属性。

它测试迭代中与当前length关联的attributes数组的<p>属性。如果length0,则会从结果中删除。


这是自定义选择器版本:

示例: http://jsfiddle.net/ZRPv4/1/

$.extend($.expr[':'], {
   'hasAnAttr': function(elem, i, attr){      
     return elem.attributes.length;
   }
});

var pWithAttrs = $('p:hasAnAttr');

答案 1 :(得分:0)

您必须按如下方式构建选择器字符串:

如果您有一组属性名称和值attrs

var selector = 'p';
for (var attrName in attrs) {
        selector = selector + '[' + attrName + '=' + attrs[attrName] + ']';
    }
}

这将创建一个形式为

的选择器字符串
p[attrName0=attrValue0][attrName1=attrName1] ...

然后在jQuery语句中使用该选择器:

$(selector).remove();

答案 2 :(得分:0)

我不认为你可以使用表达式来做到这一点,但是你可以遍历p元素并检查那些具有属性的元素:

$('p').each(function(){
if(this.attributes.length > 0)
{
...do code...
}
});

答案 3 :(得分:0)

$("p").each(function(){
   if(this.attributes.size>0){

   }
});

我不知道是否存在纯粹的jquery解决方案。