【问题标题】:Using Jquery each loop to stop at intervals使用Jquery每个循环间隔停止
【发布时间】:2013-04-04 21:15:20
【问题描述】:

我有一个列表项网格(大约 40 个lis),每个都包含这样的图像:

<ul id="grid">
    <li><img src="images/source.jpg"></li>
    <li><img src="images/source.jpg"></li>
</ul>

我想使用 jQuery 在第 8、14 和 23 个列表项(或任意序列的任意数字)之后插入一个新的列表项。

新的列表项已经存在于 DOM 中的不同无序列表中,如下所示:

<ul id="toBeAppended">
    <li class="dataBlock d0">
            <a href="#dataDummy" class="fancybox">
               <div>
                   <h3>44<span>%</span></h3>
                   <span>Lorem ipsum dolor sit amet</span>
               </div>
            </a>
     </li>
</ul>

这个无序列表被隐藏了。我想使用 jQuery 抓取li.d0 并将其插入到上面的第 8 个列表项之后,然后抓取#toBeAppended 中的下一个列表项并将其插入到第 14 行之后,依此类推。

我猜我会将想要插入新列表项的数字存储到一个数组中,如下所示:

var splashArray = [8,14,23];
$("grid li").each(function(i){
 //not sure what to do here in order to stop the the loop at each interval
  i++
});

我将如何使用 jQuery 来做这件事?

【问题讨论】:

    标签: jquery dom append


    【解决方案1】:

    不是遍历 li,而是遍历数组。

    var $lis = $("#grid li");
    var $newlis = $("#toBeAppended li");
    $.each([8,14,23],function(i,val){
        $lis.eq(val).after($newlis.eq(i));
    });
    

    【讨论】:

    • 这是一个很好的开始,但我认为我还需要将 toBeAppended 中的所有列表项分组到一个数组中,这样我就可以在每个 val 间隔之后按顺序放置每个项......有什么想法吗?
    • 我不明白你的意思。你不能用.after("&lt;li&gt;somcontent&lt;/li&gt;")替换上面的.doSomething()吗?我将编辑一个更完整的示例
    • 随着编辑,第一个新的 li 将放在 8 之后,第 2 个在 14 之后,第 3 个在 23 之后。
    • 这不是将新的 li 放置在正确的位置,而是所有三个将从第 8 个列表项开始连续排列。似乎它只是在寻找数组中的第一个数字。任何想法为什么会发生这种情况?
    • 是的,它在回调内部不起作用,但在 window.load 函数内部起作用。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多