我有一个处理大量jQuery事件的应用程序,我需要一种方法来区分简单点击和文本选择。
我想在检测到文本选择时禁用所有点击事件。这可能吗?我想过这样做:
// User presses mouse button
$(window).on('mousedown', function(){
// User moves mouse while pressing mouse button => selection
this.one('mousemove', function(){
// Disable click listener temporarily
$.fn.click = null;
// User releases mouse button => end of selection
}).on('mouseup', function(){
// Stop mousemove event & restore click listener
this.off('mousemove');
$.fn.click = function(){};
});
});
代码显然不会起作用,但有助于说明我的目标。有谁知道实现这个目标的好方法?
答案 0 :(得分:1)
设置标志之类的简单操作适用于您的示例。
var flag = true;
...
if(flag === true)
{
--Click listener enabled code here--
}
else
{
--Click listener disabled code here--
}
您所要做的就是确定何时启用或禁用该标志。
答案 1 :(得分:0)
只需使用标志,就像这样:
var flag = 0;
// User presses mouse button
$(window).on('mousedown', function(){
if (flag == 0) {
// do some if click event enabled
}
// User moves mouse while pressing mouse button => selection
this.one('mousemove', function(){
// Disable click listener temporarily
// $.fn.click = null;
flag=1;
// User releases mouse button => end of selection
}).on('mouseup', function(){
// Stop mousemove event & restore click listener
// this.off('mousemove');
// $.fn.click = function(){};
flag = 0;
});
});