如何在不触发jquery点击的情况下突出显示文本?

时间:2013-10-16 03:13:10

标签: jquery

我希望用户能够点击元素并突出显示相同的元素。如果他们点击它应该表现得像点击,但如果他们mousedown并选择一些文本它不应该像点击一样(因为这不是点击)。如果你mousedown,jQuery会触发一次点击,然后100万年后鼠标按下。我意识到你可以做到:

$myElm.on("mousedown.tmp", function () {
    $myElm.off("mouTsedown.tmp");
    $myElm.on("mouseup", function () {
        $myElm.off("mouseup.tmp")
    }
    }); // 

更正其他事件处理程序中的拼写和因子。我粗略地说。

我不想使用插件。

3 个答案:

答案 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();