【问题标题】:jquery - count divs with ids in an array?jquery - 计算数组中带有id的div?
【发布时间】:2009-12-10 20:21:37
【问题描述】:

不确定如何使用 jquery 执行此操作,但我正在尝试返回具有特定类的 div 数量的计数...

<div id="main">
<div class="contact">Data</div>
<div class="margin">Margin</div>
<div class="contact">Data</div>
<div class="break">Break</div>
<div class="break">Breaker</div>
<div class="nap">Nap</div>
</div>

而且,我想返回一个包含联系、休息和小睡类的 div 计数,以便计数返回:5...实际上,大约有 30 个类,我宁愿不必须为每个人写一个 if 语句......所以,希望有一种方法可以构建一个数组并检查该类是否在数组中?

【问题讨论】:

    标签: jquery arrays class count


    【解决方案1】:
    var count = $("div.contact, div.break, div.nap", "#main").length;
    

    如 cmets 中所述,如果您需要这是基于数组的:

    var classes = ["div.contact", "div.break", "div.nap"];
    var count   = $(classes.join(", "), "#main").length;
    

    【讨论】:

    • +1。如果它必须是一个数组,您可以使用连接轻松地从一个数组构建选择器。这是最快的方法。
    【解决方案2】:

    如果使用数组很重要:

    var classes = ['contact', 'break', 'nap'];
    //...
    var count = 0;
    $.each(classes, function(i, c) { count += $('div.' + c, '#main').length; });
    alert(count);
    

    【讨论】:

      【解决方案3】:

      Jonathan Sampson 给出了最佳答案,但不是:

      var count = $("div.contact, div.break, div.nap", "#main").length;
      

      我会这样做:

      为你想要的数组中的每个 div 添加一个分组类:

      <div id="main">
          <div class="contact grouped">Data</div>
          <div class="margin">Margin</div>
          <div class="contact grouped">Data</div>
          <div class="break grouped">Break</div>
          <div class="break grouped">Breaker</div>
          <div class="nap grouped">Nap</div>
      </div>
      

      那就用这个js吧。

      var count = $("#main .grouped").length;
      

      这样,您可以只在一个地方添加或删除元素,并让您更好地控制异常以及组中的元素。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-07-21
        • 2011-06-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-15
        • 2018-03-04
        • 2011-11-16
        相关资源
        最近更新 更多