所以我知道有一个jquery可以在页面上找到一个特定的类,我知道有jquery可以找到另一个类的后代。但我正在寻找不同的帮助。
我正在使用Drupal视图和无限滚动模块。当您向下滚动时出现新项目我希望在div类&#34; views-row-last&#34;之后显示<hr>
。因此,hr将在div之外但在下一个div之前。
所以我试图找到jquery来搜索hr但是如果它不存在则将它添加到最后一个div。我可以使用它们提供的js文件的一个函数来实现它:
load: function() {
$('div#views_infinite_scroll-ajax-loader').remove();
Drupal.attachBehaviors(this);
jQuery("<hr class='rule' style='clear:both' />").insertAfter(".views-row-last");
}
问题在于,每次加载一组新项目时,它会将相同的hr行添加到之前添加的行中,因此会显示两行,然后是三行,然后是四行等。我需要帮助来检查是否存在hr之后&#34; div class =&#34; views-row-last&#34;如果没有,实际添加它作为一个单独的元素。
非常感谢任何帮助。
答案 0 :(得分:0)
我认为你搜索得太过分了,你可以简单地使用:last
伪类:
jQuery("<hr class='rule' style='clear:both' />").insertAfter(".views-row-last:last");
如果检查真的很重要,你可以使用next / prev技巧:
jQuery("<hr class='rule' style='clear:both' />").insertAfter(
$(".views-row-last").not($(".views-row-last").next('.rule').prev())
);
或过滤:
jQuery("<hr class='rule' style='clear:both' />").insertAfter(
$(".views-row-last").filter(function(){
return !$(this).next('.ruler').length;
})
);
答案 1 :(得分:0)
在将其添加到DOM之前删除。试试这个:
load: function() {
$('div#views_infinite_scroll-ajax-loader').remove();
Drupal.attachBehaviors(this);
jQuery('hr.rule').remove(); // remove hr before appending it.
jQuery("<hr class='rule' style='clear:both' />").insertAfter(".views-row-last");
}
<强> DEMO 强>