【问题标题】:Find First Element With Data Attribute Greater Than Zero JQuery查找数据属性大于零的第一个元素 JQuery
【发布时间】:2016-06-10 15:47:34
【问题描述】:

我有一个 .item-wrap 类的 div 列表

目前,我使用以下代码选择第一个 div

$(".item-wrap:first").trigger( "click" );   

每个.item-wrap 都有一个data-amount 属性。

如何修改我当前的代码以选择第一个 .item-wrap 的 data-amount 大于 0?

【问题讨论】:

    标签: javascript jquery html


    【解决方案1】:

    使用filter 函数,我们可以限制我们的搜索。要通过数据属性选择元素,jQuery 有一个方便的data() 函数。

    这可能会显示多个结果,如我的示例所示。要获取第一个,可以使用first 方法。

    $("div").filter(function() {
      return $(this).data("amount") > 0;
    }).first().css({"color": "green"});
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <div data-amount="-7">On Tuesday I lost 7 dollars gambling</div>
    <div data-amount="-3">On Wednesday, I lost 3 dollars gambling</div>
    <div data-amount="37">On Thursday, I actually won 37 dollars</div>
    <div data-amount="16">I'm on a roll. Won 16 more dollars today</div>

    一些注意事项

    • 如果您的数据属性不完全由数字组成,则此代码将不起作用。这是假设您所有的 data-amounts 都有一个与正则表达式匹配的值:\A\d*\z

    • 如果字符串与特定模式匹配,则可以将字符串与数字进行比较。这是因为 JavaScript 执行自动类型转换。在这个例子中,它相当简单,因为我们没有很多数据。但是,如果您有更多的 div,您可能想要执行类似 +$(this).data("amount") &gt; 0

    • 的操作

    【讨论】:

      【解决方案2】:

      您可以使用each() 遍历元素并使用return false; 退出循环

      $('.item-wrap').each(function() {
          if (+$(this).data('amount') > 0) {
              // Do "Hello World" here
              $(this).trigger('click');
      
              // Breakout
              return false;
          }
      });
      

      【讨论】:

        猜你喜欢
        • 2013-04-30
        • 2013-10-11
        • 1970-01-01
        • 2014-03-12
        • 1970-01-01
        • 2022-01-25
        相关资源
        最近更新 更多