如何追加元素以在JQuery中的特定点出现?

时间:2015-07-13 16:07:27

标签: jquery underscore.js positioning dom-manipulation

我有一个包含此内容的弹出窗口:

  <div class="container">
    <span class="delete-x">X</span>
    <textarea class="text-box"></textarea>
    <span class="add-text">+ Add Text</span>
  </div>

当我点击带有“+添加文字”的范围时,我想要一个具有所有相同元素的相同容器(删除“x”span,textarea和另一个“+ Add Text”范围)以显示在具有“+添加文本”范围的容器,用于触发事件。这是我目前的jQuery:

$('.add-text').click(_.bind(function(e) {
  var $container = $('<div class="container"></div>').appendTo(this.$contents); // Underscore.js bind sets 'this' to the context of the popup window. I create the container element and append it to the popup window.
 $('.delete-x').clone(true).appendTo($container);
 $('.text-box').clone(true).appendTo($container);
 $('.add-text').clone(true).appendTo($container);

}, this));

这成功地生成了一个带有文本框和我想要的跨度的新容器。但它将它附加到弹出窗口的底部。我希望它出现在我单击的特定“+添加文本”范围的容器之后。我已经尝试过insertAfter()方法和jQuery(after)方法但无济于事。在这里有另一篇文章来自某人,他试图做类似的事情,但有表行(How to append after a specific id in jquery),但这对我没用。

需要使用Underscore.js绑定方法将'this'关键字设置为弹出窗口的上下文,如上面jQuery代码中的注释所述。如果不是这样,我想我可以使用.after($(this))让我的容器出现在我想要的地方......

还有什么我可以尝试的吗?

你好 〜Gaweyne

1 个答案:

答案 0 :(得分:1)

您可以使用insertAfter()方法将新$container直接放在点击的var $container = $('<div class="container"></div>').insertAfter($(e.target).closest('.container')); 之后。试试这个:

{{1}}