【问题标题】:Why jQuery each() loop is getting all the elements of all iteration in each iteration?为什么 jQuery each() 循环在每次迭代中获取所有迭代的所有元素?
【发布时间】:2020-12-16 04:58:31
【问题描述】:

为什么这个脚本没有在每次迭代中获取 H3,而是每次都获取所有迭代中的所有 H3?!

JS:

            $('a.grid-box').each(function(index){
                $( '.meta-info h3');
            });

HTML:

<div class="row">
      <a class="grid-box" href="">
        <div class="links-icons meta-info">
          <h3>Title 1</h3>
        </div>
      </a>

      <a class="grid-box" href="">
        <div class="links-icons meta-info">
          <h3>Title 2</h3>
        </div>
      </a>
etc...
</div>

【问题讨论】:

    标签: jquery loops each


    【解决方案1】:

    因为您的选择器没有引用 a.grid-box 迭代上下文,因此全局搜索也是如此。

    改变

    $('a.grid-box').each(function(index){
      $('.meta-info h3');
    });
    

    $('a.grid-box').each(function(index){
      $(this).find('.meta-info h3');
    });
    

    $('a.grid-box').each(function(index) {
      var h3 = $(this).find('.meta-info h3');
      console.log(h3.length, h3.text())
    });
    <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <div class="row">
      <a class="grid-box" href="">
        <div class="links-icons meta-info">
          <h3>Title 1</h3>
        </div>
      </a>
    
      <a class="grid-box" href="">
        <div class="links-icons meta-info">
          <h3>Title 2</h3>
        </div>
      </a>
      etc...
    </div>

    还要注意原始代码中的;. 错字。

    【讨论】:

    • 我已经拥有了 $(this).find() 并且它也是如此。上下文 .grid-box 它只有一个 H3,但每次我都会得到每个 .grid-box 中包含的所有 H3
    • @Dedalos01 然后你需要在你的问题中添加一个minimal reproducible example 来演示这个问题,因为这段代码按照它所说的:在每个a.grid-box 中找到一个h3:jsfiddle.net/op3w7ehm/1
    • 谢谢我已经修正了错字。
    • 我的真实情况有点复杂,我知道发生了什么。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2023-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    • 1970-01-01
    • 1970-01-01
    • 2014-05-02
    相关资源
    最近更新 更多