我有一个<div>
,里面有一堆文字。这个<div>
使用jQuery也有一个.click()
事件。
我遇到的问题是在选择/突出显示文本时会触发.click()
。在释放之前,甚至按住鼠标几秒钟。
这是一个显示问题的JSFiddle:http://jsfiddle.net/ym5JX/
我期望的行为是突出显示文本与单击元素不同。
答案 0 :(得分:66)
这是因为click
是mousedown
后跟mouseup
。我的建议是检查click
处理程序中的getSelection
。如果设置了,那么你选择了一些东西,否则你只需点击一下。
$('#click').click(function() {
var sel = getSelection().toString();
if(!sel){
alert("clicked");
}
});
答案 1 :(得分:7)
正如我发表的评论,mosuedown + mouseup = click
这正是突出显示的内容。有解决方法...见下文,
var isClick = 0;
$('#click').click(function() {
if (isClick == 1) {
alert("clicked");
}
}).mousedown(function () {
isClick = 1;
}).mousemove(function () {
isClick = 0;
});
答案 2 :(得分:2)
jsFiddle:http://jsfiddle.net/ym5JX/8/
$('#click').click( function()
{
if ( getSelection() == "" )
{
alert("clicked");
}
});