如果没有超出元素,则禁用 Drop 功能
Disable Drop function if not over element
基本上,我尝试使用 jquery 可拖动小部件将可拖动元素放入可拖动元素中,但是当可拖动元素与可拖动元素位于同一行时,会调用可拖动元素的放置函数,只有当可拖动元素 超过 可放置元素时才会被调用。
这是一个link到完整代码https://jsfiddle.net/AdokiyePaul/5z41se6h/4/
下图描述了错误,黑线说明了可拖动元素,并表明即使可拖动元素不在其上方,可放置元素仍然突出显示。
这是使用的jquery函数
$(function () {
// var zoom = $("#articles").css("zoom");
$(".article").draggable({
revert: 'invalid',
zindex: 1000,
appendTo: "body",
containment: "window",
cursorAt: {
// top: 200,
// left: 50
},
scroll: false,
helper: "clone",
start: function (event, ui) {
offset_start = {
x: ui.position.left - event.pageX,
y: ui.position.top - event.pageY,
};
// var factor = 1 / zoom - 1;
ui.position.top += Math.round(
ui.position.top - ui.originalPosition.top
//* factor
);
ui.position.left += Math.round(
ui.position.left - ui.originalPosition.left
//* factor
);
$(ui.helper).addClass("article-dragging");
},
stop: function (event, ui) {
$(ui.helper).removeClass("article-dragging");
},
drag: function (event, ui) {
// ui.position.top = event.pageY + offset_start.y;
// ui.position.left = event.pageX + offset_start.x;
ui.position.top =
event.pageY - $(".article-dragging").outerHeight() / 2;
ui.position.left =
event.pageX - $(".article-dragging").outerWidth() / 2;
},
});
$("#folders li").droppable({
accept: "div.article",
hoverClass: "over",
drop: function (event, ui) {
ui.draggable.detach().appendTo($(this));
},
});
});
考虑以下因素。
$(function() {
console.log('dkdk')
$(".article").draggable({
appendTo: "body",
revert: 'invalid',
zindex: 1000,
containment: "window",
scroll: false,
helper: function(event) {
var $el = $(event.target).closest(".article");
return $("<div>", {
class: "article article-dragging"
}).html($el.children().clone()).position({
my: "center",
at: "center",
of: event
});
}
});
$("#folders li").droppable({
accept: "div.article",
hoverClass: "over",
drop: function(event, ui) {
ui.draggable.detach().appendTo($(this));
},
});
});
示例:https://jsfiddle.net/Twisty/pf1xnet6/32/
我发现定位导致了很多奇怪的问题。我也在 clone
中看到了这些,所以我刚刚创建了一个包含正确项目的新元素并将其用作助手。
基本上,我尝试使用 jquery 可拖动小部件将可拖动元素放入可拖动元素中,但是当可拖动元素与可拖动元素位于同一行时,会调用可拖动元素的放置函数,只有当可拖动元素 超过 可放置元素时才会被调用。
这是一个link到完整代码https://jsfiddle.net/AdokiyePaul/5z41se6h/4/
下图描述了错误,黑线说明了可拖动元素,并表明即使可拖动元素不在其上方,可放置元素仍然突出显示。
这是使用的jquery函数
$(function () {
// var zoom = $("#articles").css("zoom");
$(".article").draggable({
revert: 'invalid',
zindex: 1000,
appendTo: "body",
containment: "window",
cursorAt: {
// top: 200,
// left: 50
},
scroll: false,
helper: "clone",
start: function (event, ui) {
offset_start = {
x: ui.position.left - event.pageX,
y: ui.position.top - event.pageY,
};
// var factor = 1 / zoom - 1;
ui.position.top += Math.round(
ui.position.top - ui.originalPosition.top
//* factor
);
ui.position.left += Math.round(
ui.position.left - ui.originalPosition.left
//* factor
);
$(ui.helper).addClass("article-dragging");
},
stop: function (event, ui) {
$(ui.helper).removeClass("article-dragging");
},
drag: function (event, ui) {
// ui.position.top = event.pageY + offset_start.y;
// ui.position.left = event.pageX + offset_start.x;
ui.position.top =
event.pageY - $(".article-dragging").outerHeight() / 2;
ui.position.left =
event.pageX - $(".article-dragging").outerWidth() / 2;
},
});
$("#folders li").droppable({
accept: "div.article",
hoverClass: "over",
drop: function (event, ui) {
ui.draggable.detach().appendTo($(this));
},
});
});
考虑以下因素。
$(function() {
console.log('dkdk')
$(".article").draggable({
appendTo: "body",
revert: 'invalid',
zindex: 1000,
containment: "window",
scroll: false,
helper: function(event) {
var $el = $(event.target).closest(".article");
return $("<div>", {
class: "article article-dragging"
}).html($el.children().clone()).position({
my: "center",
at: "center",
of: event
});
}
});
$("#folders li").droppable({
accept: "div.article",
hoverClass: "over",
drop: function(event, ui) {
ui.draggable.detach().appendTo($(this));
},
});
});
示例:https://jsfiddle.net/Twisty/pf1xnet6/32/
我发现定位导致了很多奇怪的问题。我也在 clone
中看到了这些,所以我刚刚创建了一个包含正确项目的新元素并将其用作助手。