$('#clickableElement').bind({
mousedown: function(e)
{
console.log('mousedown on element');
$(document).bind('mouseup',function(e){
console.log('mouseup caught');
//Do some magic here
$(this).unbind('mouseup');
});
},
mouseup:function(e)
{
//mouseup within element, no use here.
}
});
我试图从元素内部或外部释放的 mousedown 中捕获 mouseup 事件。这段代码几乎可以工作,但问题是 unbind('mouseup') 取消绑定附加到 mouseup 事件 (jqueryui) 的其他脚本。如果 unbind() 未设置,则代码将堆叠在 mouseup 事件中并调用 x 次,其中 x 是您按下鼠标的次数。
路线1:是否有某种自毁函数,调用一次并销毁?
路线2:在插入代码之前复制/克隆mouseup函数的任何方法,然后取消绑定,然后设置为以前的?
理想情况下,我想保持这个代码结构整洁,因为我有很多可点击的元素,所以在 element.mousedown 之外绑定 document.mouseup 会很麻烦。
这是我忘记添加的小提琴http://jsfiddle.net/9gFNk/