2011-02-25 33 views
0

我需要一個鼠標鬆開事件處理過程中從有針對性的DOM元素中刪除一個CSS類名,但這樣做似乎是爲了防止燒雙擊事件。我想這是由於我改變了雙擊所連接到的DOM元素,JavaScript取消了事件隊列,因爲元素改變了。我想出了迄今爲止唯一的事情是把清除的CSS類的在300毫秒左右...如何改變MouseUp事件中一個DOM元素而不破壞雙擊事件

超時下面是一些粗糙的代碼。 jQuery只是爲了方便。

var myElm = $(someElm); 
    myElm 
     .mouseup(function(e) { $(this).removeClass("abc"); }) 
     .dblclick(function (e) { alert ('hi!'); }); 

它永遠不會說嗨!

任何人有這個優雅的解決方案?

+1

適用於我:http://jsfiddle.net/MK8hy/ – 2011-02-25 16:51:33

+0

@Felix它不適合我...您使用哪種瀏覽器? – wong2 2011-02-25 16:54:34

+0

@ wong2:好的只是爲了澄清:OP想要在雙擊右鍵時調用這兩個處理程序?我在Mac OS X上使用Chrome 9,並在Firefox 3.6.13(Mac)中使用。 – 2011-02-25 16:56:46

回答

0

我認爲這兩種方法都會爲你工作:

.mouseup(function(e) { 
    $(this).removeClass("abc"); 
    e.stopPropagation(); 
    }) 

.mouseup(function() { 
    $(this).removeClass("abc"); 
    return false; 
    }) 
+0

我認爲這正是OP *不*想要的。他正在使用'stopPropagation'的效果相同,但他不想那樣做。 – 2011-02-25 16:55:23

+0

但是他希望**「dblclick」處理程序運行...您的解決方案保證它不會。 – Pointy 2011-02-25 16:55:44

+0

它仍然爲我運行。我只是停止傳播mouseup事件。 – 2011-02-25 17:01:58

1

也許去除類「ABC」你改變變得不可點擊,因此大小或對象的可見性該事件不會被觸發。嘗試將這些屬性(如寬度,高度,可見性)存儲在另一個不會移除的類中。

即使這對我的作品就好了。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title></title> 
    <style type="text/css"> 
     .style1 
     { 
      width: 100px; 
      height: 100px; 
      border: solid 1px black; 
      background-color: Green; 
     } 
     .style2 
     { 
      background-color: Red; 
      width: 200px; 
      height: 200px; 
     } 
    </style> 
    <script type="text/javascript" src="Scripts/jquery/jquery-1.4.2.js"></script> 
    <script type="text/javascript"> 
     $(function() { 
      var myElm = $('.style2'); 
      myElm 
       .mouseup(function (e) { $(this).removeClass("style2"); }) 
       .dblclick(function (e) { alert('hi!'); }); 
     }); 

    </script> 
</head> 
<body> 
    <div class="style1 style2" /> 
</body> 
</html> 
+0

就我而言,abc只是一個由jQuery插件添加的市場類...但是,如果我原來的想法是正確的,它導致DOM元素重新佈局,您的答案可能是正確的方式來處理它。 – JayRu 2011-02-28 14:19:09