【问题标题】:jQuery: Selecting all elements where attribute is greater than a valuejQuery:选择属性大于值的所有元素
【发布时间】:2021-03-05 14:31:26
【问题描述】:

我知道要过滤具有名为 attrName 的属性的元素,该属性具有值 attrValue 我这样做:

filter("[attrName='attrValue']")

但是查看文档 http://api.jquery.com/category/selectors/ 我看不到选择所有元素 s.t. 的选项。 attrName>attrValue

这行得通吗

   filter("[attrName>'attrValue']")

【问题讨论】:

  • 如果要查找属性大于零的元素,可以使用[attribute!=0]

标签: jquery css-selectors inequalities


【解决方案1】:

您可以使用.filter() 的函数重载来做到这一点,如下所示:

.filter(function() {
  return $(this).attr("attrName") > "someValue";
})

【讨论】:

    【解决方案2】:

    解决办法是jQuery.filter():

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

    【讨论】:

      【解决方案3】:

      小心,如果你在玩整数,请确保你使用的是parseInt()

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

      【讨论】:

      • 同意!有些用户可能会看到 "3" > "1" 为真,并认为他们不需要在比较之前将字符串解析为整数。这是因为“3”的 ASCII 值高于“1”的 ASCII 值。但是,当您将值与一位以上的数字进行比较时,事情就会向南(例如,“33”>“4”为假,而 33>4 为真)。
      【解决方案4】:

      对于 ES6 箭头函数

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

      【讨论】:

        猜你喜欢
        • 2013-02-03
        • 2015-10-15
        • 2015-05-28
        • 1970-01-01
        • 2012-08-08
        • 2013-09-28
        • 1970-01-01
        • 2016-11-30
        • 1970-01-01
        相关资源
        最近更新 更多