我有一堆潜水员(使用nectar-post-grid-item
类),我正在使用jquery向它们注入一个图像。这很好用。我还有一个 AJAX 加载更多按钮,它可以拉入并在页面上显示更多的div--我想在它们出现时将注入的图像添加到这些div中...我已经完成了这一切...但是...图像第二次添加到页面加载视图中的初始div集合中......当 AJAX 调用发生时,有没有方法可以阻止这种复制?
$(".nectar-post-grid-item").prepend("<img src='/wp-content/themes/salient-child/images/aspectTrans.png' class='PostGridItemTrans' alt='' />");
}
上面的代码注入了我在window.load
和document.ajaxComplete
上调用的图像
因此,在初始页面加载时,div“nectar-post-grid-item”都添加了一个带有类“PostGridItemTrans”的图像。这很好,单击 AJAX 加载按钮后,下一组div都添加了这个“PostGridItemTrans”图像-但原始div会在另一次添加它,每次AJAX加载调用都会继续这样做...
我希望尝试查看“nectar-post-grid-item”div的内容,以查看是否存在类为“PostGridItemTrans”的元素-如果不存在,则添加它...
$(".nectar-post-grid-item").each(function() {
if($(this).children('img.PostGridItemTrans').length == 0) {
$(".nectar-post-grid-item").prepend("<img src='/wp-content/themes/salient-child/images/aspectTrans.png' class='PostGridItemTrans' alt='' />");
}
});
HTML语言
<div class="nectar-post-grid-item">
</div>
<div class="nectar-post-grid-item">
</div>
<div class="nectar-post-grid-item">
</div>
然后会变成
<div class="nectar-post-grid-item">
<img src='/wp-content/themes/salient-child/images/aspectTrans.png' class='PostGridItemTrans' alt='' />
</div>
<div class="nectar-post-grid-item">
<img src='/wp-content/themes/salient-child/images/aspectTrans.png' class='PostGridItemTrans' alt='' />
</div>
<div class="nectar-post-grid-item">
<img src='/wp-content/themes/salient-child/images/aspectTrans.png' class='PostGridItemTrans' alt='' />
</div>
但是在点击 AJAX 加载更多按钮后,我得到了更多的emppy <div class=""></div>
<div class="nectar-post-grid-item">
<img src='/wp-content/themes/salient-child/images/aspectTrans.png' class='PostGridItemTrans' alt='' />
<img src='/wp-content/themes/salient-child/images/aspectTrans.png' class='PostGridItemTrans' alt='' />
</div>
<div class="nectar-post-grid-item">
<img src='/wp-content/themes/salient-child/images/aspectTrans.png' class='PostGridItemTrans' alt='' />
<img src='/wp-content/themes/salient-child/images/aspectTrans.png' class='PostGridItemTrans' alt='' />
</div>
<div class="nectar-post-grid-item">
<img src='/wp-content/themes/salient-child/images/aspectTrans.png' class='PostGridItemTrans' alt='' />
<img src='/wp-content/themes/salient-child/images/aspectTrans.png' class='PostGridItemTrans' alt='' />
</div>
1条答案
按热度按时间tag5nh1u1#
你尝试的方法应该是好的,你只需要在前置时瞄准 current 匹配的元素,而不是所有的元素。工作片段-每个div只得到1个图像:
第一个
这里是我在讨论上述想法之前编写的另一种方法。您还没有向我们展示添加
div
的代码,这可能是解决这个问题最简单的地方。我将使用一些伪代码--假设您从后端获得JSON响应,并且在success
回调中生成并插入新的HTML。类似于:因为您添加的
div
与您的ajaxComplete()
中的选择器匹配,所以它们将获得新的图像,但是之前的div
与该选择器匹配也会获得新的图像。每次您单击按钮时,图像将在已经有图像的div
中重复。因此,您需要区分新的
div
和任何现有的div
。您不能使用父选择器(在我上面的伪代码中为#something
),因为下一个集合也将添加到其中。因此,包含一个类来标识它们如何?更新 AJAXsuccess
处理程序,以执行以下操作:现在,在
ajaxComplete()
中,您可以只将new
元素作为目标,并且一旦处理完毕,就删除new
类,这样它们下次就不会匹配了: