jQuery: 选择所有设置了某个属性的p元素

3
我需要一个jQuery选择器来获取所有已设置某些属性的p元素,无论值和属性名称如何。
XPath相关表达式为:
"//p[@*]"

元素具有不一定在源中的属性...你到底想做什么? - Nick Craver
我试图获取至少有一个内联属性设置的 <p> 元素。@user113716 进行了更正。对于延迟的回复感到抱歉。 - Leo Gallucci
4个回答

7
如果你想要筛选至少有一个内联属性的 <p> 元素,可以这样做:
示例: http://jsfiddle.net/ZRPv4/
var pWithAttrs = $('p').filter(function() {
    return this.attributes.length;
});

这将给你一组至少设置了一个行内属性的<p>元素。
它测试当前迭代中与<p>相关联的attributes数组的length属性。如果length0,则会从结果中删除它。
以下是自定义选择器版本: 示例:http://jsfiddle.net/ZRPv4/1/
$.extend($.expr[':'], {
   'hasAnAttr': function(elem, i, attr){      
     return elem.attributes.length;
   }
});

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

0
你必须按照以下格式构建选择器字符串:
如果你有一个属性名和值的数组 attrs
var selector = 'p';
for (var attrName in attrs) {
        selector = selector + '[' + attrName + '=' + attrs[attrName] + ']';
    }
}

这将创建一个形如以下的选择器字符串:

p[attrName0=attrValue0][attrName1=attrName1] ...

然后在jQuery语句中使用该选择器:
$(selector).remove();

0

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

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

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

   }
});

我不知道是否存在一个纯jQuery的解决方案。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接