如何在 jQuery 中克隆克隆的 DOM 对象
有
我在 .OptionRow
s,我有一个 X 来删除该行。
.AddGroup 工作正常,直到 IX 克隆的原始元素为止。这是我的克隆和 X 代码
$('.AddGroup').click(function(e) {
e.preventDefault();
var $this = $(this);
$this.parent().siblings('.OptionRow:first').clone(true, true).hide().insertBefore($this).fadeIn();
});
$('.CloseGroup').click(function(e) {
e.preventDefault();
$(this).parents('.OptionRow').fadeOut('fast', function() {
$(this).remove();
});
});
I have <div class="OptionRow">
s followed by a <a class="AddGroup">
Inside the .OptionRow
s, I have an X to remove that row.
The .AddGroup works fine until I X the original element that was cloned. Here's my code for the cloning and the X
$('.AddGroup').click(function(e) {
e.preventDefault();
var $this = $(this);
$this.parent().siblings('.OptionRow:first').clone(true, true).hide().insertBefore($this).fadeIn();
});
$('.CloseGroup').click(function(e) {
e.preventDefault();
$(this).parents('.OptionRow').fadeOut('fast', function() {
$(this).remove();
});
});
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
克隆不会有原始版本所具有的处理程序。
尝试使用
.live('click', function(e){...})
作为您的点击处理程序,这可能会解决问题The clone wont have the handlers that the original had.
Try using
.live('click', function(e){...})
for your click handlers which might fix the issue根据 @Microprocessor 的建议,我检查了 HTML 并意识到
.OptionRow
克隆被插入到 DOM 中的错误位置。我通过使用.insertBefore($this.parent())
而不是.insertBefore($this)
解决了这个问题。谢谢@Microprocessor,我不知道为什么我不早点这样做。As per @Microprocessor's suggestion, I examined the HTML and realized the
.OptionRow
clone was being inserted into the wrong place in the DOM. I solved the problem by using.insertBefore($this.parent())
instead of.insertBefore($this)
. Thanks @Microprocessor, I don't know why I didn't do that earlier.