2

我有:

<div class="main">
    <a class="blah">blah1</a>
</div>
<div class="main">
    <a class="blah">blah2</a>
</div>
<div class="main reply">
    <a class="blah">blah3</a>
</div>
<div class="main reply">
    <a class="blah">blah4</a>
</div>
<div class="main reply">
    <a class="blah">blah5</a>
</div>
<div class="main">
    <a class="blah">blah6</a>
</div>
<div class="main reply">
    <a class="blah">blah7</a>
</div>

单击 时a.blah,我需要在parent之后附加<div class="new">xxx</div>最新的东西,这意味着它应该找到最新的agter 的父级,并且它不应该交叉到另一个,这是我编码的(但不工作):.reply .main.replya.blah.main

$('.blah').on('click', function(){
    var new_add = '<div class="new">xxx</div>';
    $(this).parents('div.main').next('.main:last').append(new_add);
});

我应该如何解决这个问题?谢谢

4

2 回答 2

2

根据评论

$('.blah').on('click', function(){
    var new_add = '<div class="new">xxx</div>';
    $(this).closest('.main').nextUntil('.main:not(.reply)').addBack().last().after(new_add);
});

演示:小提琴

  1. .closest()找到匹配选择器的直接祖先
  2. .nextUntil()查找.reply当前之后的所有元素,.main而不跨越 a .mainwithout.reply
  3. .addBack()添加回当前父级,以防下一个.main不是.reply
  4. .last()从匹配集中找到最后一个元素
  5. .after()在匹配的元素集之后插入传递的元素
于 2013-07-02T08:17:07.627 回答
0
$('.blah').on('click', function(){
    var new_add = '<div class="new">xxx</div>';
    $(this).parents('div.main').siblings('.main:last').append(new_add);
});

小提琴

于 2013-07-02T08:02:15.340 回答