gpt4 book ai didi

javascript - jQuery UI Droppable - 如何允许每个拖放区只有 1 个元素,而不是堆叠

转载 作者:太空宇宙 更新时间:2023-11-04 10:50:48 26 4
gpt4 key购买 nike

我当前的脚本:https://jsfiddle.net/uoyp37bj/11/

问题是,目前可以通过将可放置元素拖动到彼此之上来“堆叠”可放置元素。我正在努力做到只有最新删除的元素保留在那里,并且删除所有以前的元素。

我最初只是使用 CSS“隐藏”额外的元素,但由于我使用输入框来跟踪拖放区中存在的元素,这不再可能了。任何帮助将不胜感激,希望它在 jQuery UI API 中是相对简单的,但目前对我没有任何帮助。

$(".social-msl-link-label").draggable({
connectToSortable: ".social-msl-group-list",
revert: "invalid",
helper: "clone"
});

var orderMSLids = [];
var droppableOptions = {
accept: ".social-msl-link-label",
tolerance: 'pointer',
greedy: true,
hoverClass: 'highlight',
drop: function(ev, ui) {
orderMSLids = [];
$(ui.draggable).clone(true).detach().css({
position: 'relative',
top: 'auto',
left: 'auto'
}).appendTo(this);

orderMSLids.push($(this).find('.social-msl-link-label').attr('id'));

$(this).siblings().filter(function() {
return $(this).text().trim() === $(ui.draggable).text().trim();
}).empty();

str = [];
$(".social-msl-links-order li").each(function(index) {
var res = $(this).children().attr('id');
if (res) {
str.push(res);
}
});

var string = str.join(",");
$('#msl-order').val(string);


}
};

$(".social-msl-links-order li.social-msl-drop").droppable(droppableOptions);

$('.social-msl-add').click(function() {
var $droppable = $('<li class="social-msl-drop"></li>').droppable(droppableOptions);
$droppable.insertBefore('.social-msl-add');
});

$('#msl-order').prop('value').split(',').forEach(function(id) {
var $droppable = $('.social-msl-drop.ui-droppable:empty').first();
if (id) {
$('.draggable #' + id).clone(true).appendTo($droppable);
}
});

只是有一个想法,但还没有取得进展——也许可以迭代“drop”调用中的所有元素,并删除任何重复项。在这个循环中,还可以检查是否有任何拖放区有 2 个元素并删除除 1 个元素之外的所有元素。不确定如何编写脚本,但初始逻辑对我来说很有意义。

最佳答案

不是将 draggable 附加到 droppable,而是像这样用 draggable 替换它的全部内容:

$(this).html(ui.draggable.clone(true).css({
position: 'relative',
top: 'auto',
left: 'auto'
}));

代替:

 $(ui.draggable).clone(true).detach().css({
position: 'relative',
top: 'auto',
left: 'auto'
}).appendTo(this);

关于javascript - jQuery UI Droppable - 如何允许每个拖放区只有 1 个元素,而不是堆叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35007052/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com