我正在使用 Denis 出色的 tableDnD jquery 插件。我想允许用户拖放行,但前提是他们的鼠标位于行内的特定 td 内。
到目前为止,我已经尝试了两种方法:(请注意,var "tr" 包含我正在操作的 jquery 行元素。td id="queue_position" 是我尝试启用拖动的那个)。
我认为 tableDnD 仅在启动时检查 nodrag 类。动态添加或删除 nodrop 类不会改变任何内容。所以我尝试了两种方法来做我需要做的事情。
一种尝试是深入研究 tableDnD 内部结构并尝试将其称为 makeDraggable 函数。尝试二是在添加/删除 nodrop 类后重新初始化 tableDnD。
这些方法中的任何一种似乎都可以在允许的 td 中启用拖动。离开 td 时,它们都没有正确禁用拖动。一旦在 mouseenter 事件中启用了一行,它将永远保持启用状态。
我宁愿找到一种方法来做我需要的事情,而无需修改 tableDnD。
关于如何使这项工作的任何建议?
$(tr)
.addClass("nodrag")
.find("td[id='queue_position']")
//.on("mouseenter",function() {
// $(tr).removeClass("nodrag");
// $.tableDnD.makeDraggable(document.getElementById("tableLeft"));
//})
//.on("mouseleave",function() {
// $(tr).addClass("nodrag");
// $.tableDnD.makeDraggable(document.getElementById("tableLeft"));
//});
.on("mouseenter",function() {
$(tr).removeClass("nodrag");
$("#tableLeft").tableDnD({onDrop: handleDragDrop});
})
.on("mouseleave",function() {
$(tr).addClass("nodrag");
$("#tableLeft").tableDnD({onDrop: handleDragDrop});
});