2012-02-28 68 views
6

我正在使用jQuery UI Sortable插件,並且所有事情都按預期的方式工作。在完成拖動項目以重新排列列表(<A>標記的列表)後,點擊事件在完成放置後觸發。jQuery UI拖放後可排序停止事件

之前有人遇到過這個問題嗎?如果是這樣,你是怎麼去修理它的?

+0

您可以在[jsfiddle](http://www.jsfiddle.net)中構建測試用例來重現您的問題嗎? – 2012-02-28 19:33:31

+0

也許這會有所幫助,因爲它看起來像是你正在運行到:http://stackoverflow.com/a/1771635/37140 – 2012-02-28 19:38:14

+0

你確定它是點擊事件?還有一些其他事件在放完後觸發(最常見的可能是「更改」事件)。如果您向我們展示您的代碼,可以提供更好的答案。 – Matt 2012-02-28 19:35:28

回答

7

好吧......我想通了..

這裏是我的解決方案:

$(thumbOpts.container).sortable({ 
     items: '.page', 
     revert: true, 
     opacity: 0.5, 
     start: function(evt, ui) { 
      var link = ui.item.find('a'); 
      link.data('click-event', link.attr('onclick')); 
      link.attr('onclick', ''); 
     }, 
     stop: function(evt, ui) { 
      setTimeout(
       function(){ 
        var link = ui.item.find('a'); 
        link.attr('onclick', link.data('click-event')); 
       }, 
        200 
      ) 
     } 
    }); 
+2

OK + 1,但是您認爲應該存在一個更清潔的解決方案嗎? – jjmontes 2012-11-28 14:49:34

+0

排序過程中是否有事件?像拖動(拖動時)這樣的事情? – FrenkyB 2018-02-15 14:33:33

1

只需添加選項排序:

helper : 'clone' 

這將阻止點擊事件源元素,並不會改變任何用戶體驗。

請參閱doc for "helper"