gpt4 book ai didi

javascript - 可放置区域中的 jQuery 可放置区域

转载 作者:数据小太阳 更新时间:2023-10-29 04:47:40 24 4
gpt4 key购买 nike

我有一个名为 <ul class="droppable"> 的可放置无序列表.在无序列表中,我动态生成了名为 <li class="placeholder"></li> 的列表项。 ,它们也是可丢弃的。

在占位符之间放置可拖动项时,一切正常。但是当在 <li class="placeholder"></li> 上放置一个可拖动的项目时本身,可拖动项被附加到占位符和无序列表。

所以我得到了它的双克隆。

Here's a jsfiddle有一个直观的例子。我知道在我的页面上获得双重克隆是合乎逻辑的,但我不知道如何禁用它...

非常感谢任何帮助!

更新:如果您将可拖动项垂直拖动到可放置元素上,它们会自动附加吗?这怎么可能?

最佳答案

您可以尝试解决此问题的一种方法是将所有行为移动到您的 sortable 并仅使用 droppable 进行切换以确定您需要的行为。这样,您就可以在一个地方处理所有事情,这应该可以解决在同一元素上同时使用 sortabledroppable 的一些不良影响。像这样:

在您的 droppable 中,您将开关设置为 overout,并设置您需要的对象。

 $("li.placeholder").droppable({

accept: "li.to-drag",
hoverClass: "correct",
activeClass: "active",
revert: false,
tolerance: "pointer",
over: function (e, ui) {
curDrag = ui.draggable;
curTarget = e.target;
curThis = $(this);
overSortable = true;
},
out: function (e, ui) {
overSortable = false;
},

drop: function (event, ui) {

}

});

然后,在 sortablebeforeStop 事件中,您检查变量 overSortable 是否为真,并在那里设置行为。所有涉及 ui.draggable、this 和 event.target 的内容都需要替换为您在 droppable 中设置的对象。一个更好的事件方法是创建一个函数来处理所有这些行为并将它们作为参数传递。

beforeStop: function (e, ui) {
if (overSortable) {
curDrag.addClass('placeholder');
var dragging = curDrag.find("img").remove();

curThis.append(dragging).addClass("dropped");
curThis.droppable('disable');

var day = curDrag.attr('data-id');
var index = $(curTarget).index();

//...

} else {
ui.item.addClass('placeholder')
}

仍然需要进行调整,目前还不完全清楚究竟应该发生什么以及何时发生,但这可以使工作变得更容易,而不是试图管理当你放下一个元素时触发的多个事件,你只管理一个。

http://jsfiddle.net/ts290vth/4/

关于javascript - 可放置区域中的 jQuery 可放置区域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30981080/

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