【发布时间】:2021-11-14 07:46:20
【问题描述】:
我正在使用 jQuery 并使用拖放功能。我的图像不断重复,我不知道为什么。任何帮助都会很棒。我很确定我的问题是:
$('#' + seat).append('<div class="studentCard" id="' + id + '"><img class="studentImage" src="Images/' + id + '.jpg" style="height:150px; width:150px;" />' + student + '</div>');
这是我的功能:
$('.seat').droppable({
drop: function (event, ui) {
var seat = $(this).attr('id');
var id = $(ui.draggable).attr('id');
var student = $(ui.draggable).html();
$.ajax({
success: function () {
if ($('#' + seat + '> div').length > 0) {
alert('Desk already occupied');
}
else {
$(ui.draggable).remove();
$('#' + seat).append('<div class="studentCard" id="' + id + '"><img class="studentImage" src="Images/' + id + '.jpg" style="height:150px; width:150px;" />' + student + '</div>');
$('div#' + id).draggable({
helper: 'clone'
});
}
}
});
}
});
【问题讨论】:
-
append()旨在添加新内容。如果您多次调用它,则会导致重复的内容。您可以检查该图像是否已经存在而不是调用append()。你想创造什么行为? -
为每个新图像使用不同的 id 怎么样? (尝试在 id 末尾添加一个数字计数器,以便获得 id1、id2 等以使 id 唯一)...
-
或者根本不使用 ID - 从不需要递增 ID。
$("..").append("div id="+(n+1)... $("div#" + id).event可以是$("div").appendTo("..").event -
@freedomn-m 只是一个注释,运行两次会重新初始化 droppable,
drop事件只会运行一次。 -
请提供一个最小的、可重现的示例:stackoverflow.com/help/minimal-reproducible-example 可拖动的帮助器可能仍在出现,当您追加时,您并没有删除您希望删除的所有项目。