【发布时间】:2013-12-27 00:52:59
【问题描述】:
如何在每 n 个 divs 之后插入一个 div.test 并检查 div.test 是否已存在于所需/目标位置以防止插入重复?
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
使用$.InsertEveryNItems('div.container', '<div class="added"></div>', 3); 之类的东西来结束:
<div>1</div>
<div>2</div>
<div>3</div>
<div class="test"></div
<div>4</div>
<div>5</div>
我尝试了div:eq(3) 和div:nth-child(3n),但是当新的divs 被动态添加到页面时都不起作用。
@KevinB 的http://jsfiddle.net/Yg22b/7/ 效果很好,但它会从 DOM 中删除 div.test 元素,并在每次动态添加更多 divs 时重新插入它。如果有办法避免这种情况就好了?
【问题讨论】:
-
对,这些都不会自动执行,您必须在添加更多项目时重新运行脚本,同时考虑到它之前可能已经运行过。
-
当然,我会重新运行脚本,但
div:nth-child(3n)仍然不能正确定位到添加到 DOM 的新divs。 -
当然可以,假设您在将这些元素添加到 dom 之后运行它。
-
CSS 可能对您来说是一个更好的解决方案。
div:nth-child(3n+2):after { display: block; content: "test" } -
所以,更像这样:jsfiddle.net/Yg22b/7
标签: javascript jquery insert append