2013-07-01 30 views
3

我在IE中發現了一個雙擊問題。雙擊使用IE

以下是我的HTML:

<div id="test">Hello World!</div> 

而且我的jQuery:

$('#test').bind('dblclick', function (event) { 
    event.stopPropagation(); 
    $(this).css({'background-color': 'red'}); 
}); 

在IE中執行以下操作:

  1. 的DIV外,按下鼠標→鼠標向上→鼠標向下→保持鼠標向下。
  2. 然後,按住鼠標,將鼠標移入DIV並向上滑動。

DIV變成紅色,就好像雙擊事件起源於DIV。

看來,在IE瀏覽器中雙擊事件被觸發無論是雙擊時:

  1. 開始,並在DIV結束DIV外
  2. 開始和結束的DIV中。

然而在FF/Chrome中,只有當雙擊DIV中的STARTS和ENDS時纔會觸發事件。

這是什麼官方解釋?我怎樣才能讓IE雙擊行爲像FF/Chrome雙擊?

+0

不知道爲什麼您刪除了我添加的小提琴。我懷疑有人會幫助你,而不能複製這個問題,這正是小提琴的用武之地。無論如何,我會把它放在一個評論中,它可以幫助其他人以及你不能刪除它的地方:http://jsfiddle.net/fH2z3/ –

+0

順便說一句,它也在IE10中表現得那麼好。 –

+0

不好意思。因爲我的母語不是英語,這是我第一次使用stackoverflow。我只是編輯了很多次的內容。我沒想到有人這麼快就回復了。請耐心等待我所做的一切。謝謝大家你的回覆! :) –

回答

3

(上)DblClick事件是一個本地JavaScript事件,而不是一個jQuery的事件

DblClick事件是不是跨瀏覽器一致的,看到這個票3歲,但在某些方面仍然有效:http://bugs.jquery.com/ticket/7876即使是現在序列在IE10中與FF/Chrome/Safari相同,但正如您所注意的那樣,仍然存在一些錯誤。

作爲一種變通方法,你可以使用這個段,而不是DblClick事件:

DEMO with custom dblclick

$('#test').on('click', function(event){ 
    var t = this; 
    if (!t.clicks) t.clicks = 0; 
     ++t.clicks; 
     if (t.clicks === 2) { 
      t.clicks = 0; 
      //here the kind of dclclick is fired ... 
      $(t).css({'background-color' : "red"}); 
     } 
     setTimeout(function() { 
      t.clicks = 0 
     }, 500);//duration value can be change depending of your wishes 

}); 

的其他解決辦法可能是綁定在鼠標按下/的mouseenter /鼠標離開/解除綁定DBLCLICK事件(懸停)處理程序,這樣的:

DEMO with mousedown/mouseenter/mouseleave

$('#test').hover(function() { 
    $(this).on('mousedown.cust', function() { 
     $(this).on('dblclick.cust', function() { 
      $(this).css({ 
       'background-color': "red" 
      }); 
     }); 
    }); 
}, function() { 
    $(this).off('mousedown.cust dblclick.cust'); 
}); 
+0

非常感謝你:) –

+0

是的,謝謝你,烤! –

+0

@ guys,歡迎您! –

0

這是fiddle。 jQuery的dblclick適用於FF和IE9。測試:「只有在雙擊DIV內的起始和結束時才觸發事件」

$("#test").dblclick(function(event) { 
    event.stopPropagation(); 
    $(this).css({'background-color': 'red'}); 
});