我有一个包含此内容的弹出窗口:
<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
答案 0 :(得分:1)
您可以使用insertAfter()
方法将新$container
直接放在点击的var $container = $('<div class="container"></div>').insertAfter($(e.target).closest('.container'));
之后。试试这个:
{{1}}