2013-05-02 63 views
0

我試圖改變拖動的元素的指針與標準方法:Knockout +可拖動/可拖放的擴展是給我一個卡住的光標?

$(element).draggable({ 
       revert: "invalid", 
       revertDuration: 0, 
       cursor: "move" 
}); 

但是每當一個元素是「下降」成功(集>文件夾中的小提琴),光標「大棒」。我無法弄清楚我的生活。

這裏是我的小提琴:

http://jsfiddle.net/PTSkR/50/

要重現,只需拖動設置在進入該文件夾,看看光標不會恢復。如果它很重要,我就會遇到問題。

任何想法爲什麼發生這種情況,我該如何解決它?

更新:我可以通過添加下面的CSS修復:

#container { 
    cursor: default; 
} 

它仍然令我奇怪的是,容器元素是越來越設置爲cursor: move。這裏的任何見解都會很棒,因爲我的解決方案感覺非常糟糕。

更新2:我的解決方案在小提琴中工作,但不是在生產中 - 它看起來像所有父元素設置爲"cursor: move"。回頭撓撓我的腦袋。

回答

0

爲UI更新本身留出時間。看更新的小提琴:http://jsfiddle.net/tkirda/PTSkR/51/

 setTimeout(function(){ 
      $('#container').isotope('remove', ui.draggable); 
     }, 0); 
+0

哇,這工作。爲什麼需要? – SB2055 2013-05-02 04:20:57

+0

@ SB2055 - 我絕不是專家,但它可能與級聯訂閱事件有關。一個事件觸發另一個觸發另一個事件...另一個事件觸發另一個事件...該值「節制」事件發生,允許事件「趕上」並停止級聯。 – 2013-05-02 08:03:28

+0

一旦拖動完成,UI腳本仍然需要更新某些東西,其中一個是從正文元素中刪除'cursor:move':)。而且因爲你刪除了可拖動的元素,所以在訪問它的時候腳本可能有錯誤並且彎腰執行。通過添加setTimeout,您允許代碼完成執行。調度程序將能夠在當前執行線程完成工作後立即運行該代碼。 – 2013-05-02 15:13:00