选择/突出显示文本时会触发jQuery .click()

时间:2012-04-30 20:17:09

标签: javascript jquery javascript-events

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

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

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

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

3 个答案:

答案 0 :(得分:66)

这是因为clickmousedown后跟mouseup。我的建议是检查click处理程序中的getSelection。如果设置了,那么你选择了一些东西,否则你只需点击一下。

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

DEMO:http://jsfiddle.net/ym5JX/3/

答案 1 :(得分:7)

正如我发表的评论,mosuedown + mouseup = click这正是突出显示的内容。有解决方法...见下文,

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

DEMO

答案 2 :(得分:2)

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

$('#click').click( function()
{
    if ( getSelection() == "" )
    {
        alert("clicked");
    }
});