2012-02-28 65 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"