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

yhuiod9q  于 2022-11-29  发布在  jQuery
关注(0)|答案(3)|浏览(120)

我有一个<div>,里面有一堆文本。这个<div>还使用jQuery在上面有一个.click()事件。
我遇到的问题是.click()在选择/突出显示文本时被触发。甚至在释放之前按住鼠标几秒钟。
以下是显示此问题的JSFiddle:http://jsfiddle.net/ym5JX/
我所期望的行为是突出显示文本与单击元素不同。

wlsrxk51

wlsrxk511#

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

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

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

zkure5ic

zkure5ic2#

正如我在评论中所写的,mosuedown + mouseup = click正是高亮显示所做的。有一个解决办法,见下文,

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

DEMO

pb3s4cty

pb3s4cty3#

jsFiddle:http://jsfiddle.net/ym5JX/8/的操作系统

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

相关问题