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

发布于 2024-10-02 19:13:01 字数 110 浏览 2 评论 0原文

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

XPath相关表达式为:

"//p[@*]"

I'm in the need for a jquery selector to get all p elements that has some attribute set, no matter the value and no matter the attribute name.

XPath related expression is:

"//p[@*]"

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

辞旧 2024-10-09 19:13:01

如果您希望

元素至少设置一个内联属性,则可以这样做:

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

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

这将为您提供一组

元素,其中包含至少一个内联属性集。

它测试迭代中与当前

关联的 attributes 数组的 length 属性。如果length0,它将从结果中删除。


以下是自定义选择器版本:

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

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

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

If you're saying that you want <p> elements that have at least one inline attribute set, you could do this:

Example: http://jsfiddle.net/ZRPv4/

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

This will give you a set of <p> elements that have at least one inline attribute set.

It tests the length property of the attributes array associated with the current <p> in the iteration. If the length is 0, it will be removed from the result.


Here's a custom selector version:

Example: http://jsfiddle.net/ZRPv4/1/

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

var pWithAttrs = $('p:hasAnAttr');
请帮我爱他 2024-10-09 19:13:01

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

如果您有属性名称和值的数组 attrs:

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

这将创建以下形式的选择器字符串:

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

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

$(selector).remove();

You must build the selector string as follows:

If you have an array of attribute names and values attrs:

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

This will create a selector string of the form:

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

and then use that selector in a jQuery statement:

$(selector).remove();
空心空情空意 2024-10-09 19:13:01

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

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

I don't think you can do that using expressions, but you can loop through the p elements and check for those that have attributes:

$('p').each(function(){
if(this.attributes.length > 0)
{
...do code...
}
});
海未深 2024-10-09 19:13:01
$("p").each(function(){
   if(this.attributes.size>0){

   }
});

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

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

   }
});

I dont know if is exist a pure jquery solution.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文