如何在使用JQuery UI Selectable插件绑定的元素上启用dblclick事件?

在我的情况下,我有一个应用了JQuery UI Selectable插件的UL,但与此同时,我希望使用selectable plugin绑定的项目当我double click这个项目时做了一些事情。但它似乎是JQuery UI Selectable plugin had block the dblclick event 。 那么,我怎样才能让它发挥作用呢?

例如:

  $(function() { $( "#selectable" ).selectable(); $( "#selectable" ).dblclick(function(){ // do something here }) });  
  • Item 1
  • Item 2
  • Item 3
  • Item 4
  • Item 5
  • Item 6
  • Item 7

非常感谢你!!

在jQuery中,您可以链接事件,如下所示:

 $( "#selectable" ).selectable().dblclick(); 

我不确定这会有效,因为这两个事件都是点击事件。

如果你添加.ui-selected来取消传入可选方法的选项,那么你可以双击b / c它不会引起选择.ui选择项目上的事件。

 $('#selectable').selectable({ cancel: '.ui-selected' }); 

虽然,这确实会取消取消选择所选项目的能力。 您可以执行以下操作以手动取消选择

 $('.ui-selected').on('click', function() { $(this) .removeClass('ui-selected') .parents('.ui-selectable') .trigger('selectablestop'); // you might also want to trigger selectablestop. }); 

您只需将距离设置为> 0即可记录点击次数和双击次数。

 $("#selectable").selectable({ distance: 1 }); 

请参阅http://forum.jquery.com/topic/selectable-dosn-t-fire-click-event

 $("#selectable li").mousedown(function(event) { if(event.which==1) { if($(event.currentTarget).data('oneclck')==1) { alert('click'); return false; } else { $(this).data('oneclck', 1); setTimeout(function(){ $(event.currentTarget).data('oneclck', 0); }, 200); } } }); 

这是因为onmousedown触发选择事件(选择多个可选元素的虚线div。)我有同样的问题,我通过向JQUERY UI库添加几行代码来修复它。 您需要做的是通过在鼠标移动几个像素后启动它来延迟选择事件。 这允许您双击元素并仍然具有用户友好的选择! :d

这是代码中延迟选择并解决问题的部分:

  

我在这篇文章中找到了这个解决方法

我用它,我认为这是最好的解决方案。

 $("ul").selectable({ filter: "li" }); $("ul").on("mousedown","li",function(e){ var n = ($(e.toElement).is(".ui-selected")) ? 1 : 0; $("#filelist").selectable( "option", "distance", n ); }); 

当用户开始单击所选元素时,我将distance设置为1,这样就不会阻止双击事件,但如果用户真正开始选择,我可以使用。