jQuery insertAfter最后一项

我有:

       

点击a.blah ,我需要将一些类似

xxx

.main之后的最新.main ,这意味着它应该找到最新的.reply agter a.blah ,它不应该交叉到另一个.main ,这是我编码的(但不工作):

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

我该怎么解决这个问题? 谢谢

根据评论

 $('.blah').on('click', function(){ var new_add = '
xxx
'; $(this).closest('.main').nextUntil('.main:not(.reply)').addBack().last().after(new_add); });

演示: 小提琴

  1. .closest()找到与选择器匹配的直接祖先
  2. .nextUntil()查找当前.main之后的所有.reply元素,而不会越过.main而不是.reply
  3. .addBack()添加回当前父级,包含下一个.main不是.reply
  4. .last()查找匹配集中的最后一个元素
  5. .after()在匹配的元素集之后插入传递的元素
 $('.blah').on('click', function(){ var new_add = '
xxx
'; $(this).parents('div.main').siblings('.main:last').append(new_add); });

小提琴