jQuery:选择所有属性大于某个值的元素

77

我知道要筛选一个具有属性名为attrName,其值为attrValue的元素,可以这样做:

filter("[attrName='attrValue']")
但是查看文档http://api.jquery.com/category/selectors/,我找不到选择所有属性名大于attrValue的元素的选项。
这个能行吗?
   filter("[attrName>'attrValue']")

1
如果您正在寻找具有大于零属性的元素,则可以使用[attribute!=0] - Damien
4个回答

113
你可以使用 .filter() 函数的重载来实现,像这样:
.filter(function() {
  return $(this).attr("attrName") > "someValue";
})

29

解决方案是jQuery.filter()

$("selector").filter(function() {
    return  $(this).attr("my-attr") > 123;
});

29

请注意,如果你在使用整数,请确保使用 parseInt()函数。

$("selector").filter(function() {
    return parseInt($(this).attr("my-attr")) > 123;
});

7
同意!一些用户可能会认为"3" > "1"是正确的,所以在比较之前不需要将字符串解析成整数。这个方法能行得通,因为"3"的ASCII值比"1"高。但是,当你比较超过一个数字的值时(例如:"33" > "4"是假的,而33>4是真的),事情就会变得复杂。 - Arthur Hebert-Ryan

0

关于ES6箭头函数

$("selector").filter((index, el) => {
    return parseInt($(el).attr("attrName")) > 123;
});

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