37

我有<div>一堆文字。这<div>也有一个.click()使用 jQuery 的事件。

我遇到的问题是.click()在选择/突出显示文本时被触发。甚至在松开鼠标之前按住鼠标几秒钟。

这是一个显示问题的 JSFiddle:http: //jsfiddle.net/ym5JX/

我期望的行为是突出显示文本与单击元素不同。

4

3 回答 3

79

那是因为 aclick是 amousedown后跟 a mouseup。我的建议是检查处理程序getSelection内部click。如果已设置,则您选择了某些内容,否则您只需单击即可。

$('#click').click(function() {
    var sel = getSelection().toString();
    if(!sel){
        alert("clicked");
    }
});​

演示:http: //jsfiddle.net/ym5JX/3/

于 2012-04-30T20:23:42.633 回答
8

正如我在评论中发布的那样,mosuedown + mouseup = click这正是突出显示的作用。有解决方法..见下文,

var isClick = 0;
$('#click').click(function() {
    if (isClick == 1) {
        alert("clicked");
    }
}).mousedown(function () {
    isClick = 1;
}).mousemove(function () {
    isClick = 0;
});

演示

于 2012-04-30T20:24:41.727 回答
2

jsFiddle:http: //jsfiddle.net/ym5JX/8/

$('#click').click( function()
{
    if ( getSelection() == "" )
    {
        alert("clicked");
    }
});
于 2012-04-30T20:24:44.310 回答