如何在使用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 }) });
非常感谢你!!
在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,这样就不会阻止双击事件,但如果用户真正开始选择,我可以使用。