我希望用户能够点击元素并突出显示相同的元素。如果他们点击它应该表现得像点击,但如果他们mousedown并选择一些文本它不应该像点击一样(因为这不是点击)。如果你mousedown,jQuery会触发一次点击,然后100万年后鼠标按下。我意识到你可以做到:
$myElm.on("mousedown.tmp", function () {
$myElm.off("mouTsedown.tmp");
$myElm.on("mouseup", function () {
$myElm.off("mouseup.tmp")
}
}); //
更正其他事件处理程序中的拼写和因子。我粗略地说。
我不想使用插件。
答案 0 :(得分:3)
这是我的fiddle解决方案,我希望这是你想要的。
我正在使用mouseup()
来突出显示文字。在点击事件中,我正在检查文本是否已被选中。
var selection = window.getSelection();
if(selection == 0)
// Click event code goes here
以下是代码。
$(function(){
$("div").click(function(){
var selection = window.getSelection();
if(selection == 0)
{
// click event code goes here.
}
});
$("div").mouseup(function(){
document.execCommand("BackColor", false, "yellow"); // highlight selected text
document.designMode = "off";
});
$("div").mousedown(function(){
document.designMode = "on"; // Turn on design mode
});
});
答案 1 :(得分:1)
var mydate = new Date()
var downtime;
$('#div').on('mousedown', function() {
downtime = mydate.getTime();
});
$('#div').on('mouseup', function() {
if((mydate.getTime() - downtime) < 500) {
//perform click function
}
else {
//highlight text
}
});
答案 2 :(得分:0)
跟踪mousedown上的鼠标位置。将它与mouseup上的鼠标位置进行比较。如果鼠标移动了一定数量的像素,请阻止默认事件。
event.preventDefault();