我需要一个jquery选择器来获取所有具有某些属性集的p元素,无论值是什么,无论属性名称如何。
XPath相关表达式是:
"//p[@*]"
答案 0 :(得分:7)
如果您说您希望<p>
元素至少设置一个内联属性,则可以执行以下操作:
示例: http://jsfiddle.net/ZRPv4/
var pWithAttrs = $('p').filter(function() {
return this.attributes.length;
});
这将为您提供一组<p>
元素,这些元素至少包含一个内联属性。
它测试迭代中与当前length
关联的attributes
数组的<p>
属性。如果length
为0
,则会从结果中删除。
这是自定义选择器版本:
示例: 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解决方案。