我正在使用 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});
 });