2011-08-22 62 views
3

我试图获得类似以下的内容,但无法找到正确的方式来为此使用停止事件。jQuery UI可拖动 - 如果发生有效下降,请删除克隆

我有两列,你可以从右边拖动到左边。如果放置无效,我已经有了正确的恢复功能,但是如果在左侧列上发生了有效放置,我想要移除右侧列中的项目。我知道条件不正确,但我不确定要查找哪个标记以确定该放置是否有效。

$("#sortable2 li").draggable({ 
     connectToSortable: "#sortable1", 
     helper: "clone", 
     revert: "invalid", 
     stop: function (event, ui) { 
      if (drop == "valid") 
      { 
       $(this).remove(); 
      } 
     } 
    }); 

回答

13

你可以处理在.sortable

example jsfiddle

$("#sortable1").sortable({ 
    receive: function (event, ui) { // add this handler 
     ui.item.remove(); // remove original item 
    } 
}); 

$("#sortable2 li").draggable({ 
    connectToSortable: "#sortable1", 
    helper: "clone", 
    revert: "invalid" 
}); 
+0

这是我错过了什么。谢谢! – Aaron

+0

我修改了上面的例子,以便第一个列表中的元素可以移动到第二个,从第二个移动到第一个。但是一旦这个元素被移动到另一个列表中,它就不能回到它的原始列表。 –

0

作为开始,你可以比较event-startevent-stop之间的差异。使用调试器分解事件功能,您可以看到两者之间的区别。

0

除去使用receive事件的原始元素如果你不选任何东西,希望原来的项目将被删除的下降是有效的,你可以删除helper:"clone"

$("#sortable2 li").draggable({ 
    revert: "invalid", 
});