jquery检查div类存在于另一个特定类之后

时间:2014-03-17 14:07:53

标签: jquery ajax function drupal

所以我知道有一个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;如果没有,实际添加它作为一个单独的元素。

非常感谢任何帮助。

2 个答案:

答案 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