如何突出显示文本而不用jquery触发点击?

5 jquery

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

$myElm.on("mousedown.tmp", function () {
    $myElm.off("mouTsedown.tmp");
    $myElm.on("mouseup", function () {
        $myElm.off("mouseup.tmp")
    }
    }); // 
Run Code Online (Sandbox Code Playgroud)

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

我不想使用插件。

小智 4

这是我的小提琴解决方案,希望这是您所寻找的。

我用它mouseup()来突出显示文本。在单击事件中,我检查文本是否已被选择。

 var selection = window.getSelection();
      if(selection == 0)
       // Click event code goes here
Run Code Online (Sandbox Code Playgroud)

下面是代码。

$(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
  });
 });
Run Code Online (Sandbox Code Playgroud)