每次我使用JQuery的AppendTo()时,它都会复制我想要追加的项目。每次我用ajax(包括脚本)加载页面时,它都会复制它甚至更多次!它只在重新加载整个页面后第一次正常工作。
$("<tr><td><input name='quantity[]'/></td><td><input type='text' name='ItemDescription[]'/></td><td><span class='remove'>X</span></td></tr>")
.appendTo('.tbody');
请注意,我还尝试了append()
,
和
$('.tbody').html($('.tbody').html() + 'string');
并且同样的问题仍然存在。
答案 0 :(得分:0)
在执行追加过程之前,请先尝试复制
var copy = $('.tbody').html(); //This should be done initially before making any calls
$('.tbody').html(copy + 'string');
这样你就不会重复追加你的元素了。
答案 1 :(得分:0)
当你使用append()时,它会被附加到现有的主体(顺便说一下我不知道你为什么要在主体上附加一行。这应该附加到一个表中)。因此,如果您第二次调用append(),则会有两行。这正是append()的作用。如果要在每次加载后重新设计表,则必须使用
清除所有现有行$('.tbody').html("");
但最好在身体中使用一个表并将该行附加到表中并清除表格。
答案 2 :(得分:0)
从您的描述中看起来您正在运行多次注册事件处理程序的脚本。最好的解决方案是不要这样做,即尝试只运行一次脚本。
如果您正在处理动态元素,请查看事件委派。
如果那是不可能的,另一种解决方案是在添加新处理程序之前删除任何处理程序,以便任何给定时间只有一个处理程序。您还可以使用事件名称空间来确保您不会删除其他一些处理程序
$('some-selector').off('click.duplicate').on('click.duplicate', function(){})