2012-02-26 81 views
1

嗨,我想運行一個功能,如果按下鼠標左鍵並拖動。jquery代碼工作在鉻,但不是火狐或safari

我似乎無法弄清楚什麼是錯用下面的代碼:

var leftbuttondown = false; 
$("#tiles p").live("mousedown mouseover", function (e) { 
(e.which === 1) ? leftbuttondown = true : leftbuttondown = false ; 
if(leftbuttondown === true){ 
updateMap(this); 
} 
}); 

的代碼工作預計在Chrome,但在Firefox和Safari正在執行鼠標懸停代碼,無論是什麼按下。

我也曾嘗試以下

$("#tiles p").live("mousedown mouseover", function (e) { 
if(e.which === 1){ 
updateMap(this); 
} 
}); 

再次按預期工作中鉻,但不能在Firefox或Safari ...

我這裏檢查:

http://api.jquery.com/event.which/

它告訴我每個瀏覽器的鼠標左鍵是= 1

它開始挫敗我,所以任何和所有的幫助將是真棒

+0

爲什麼你不能把它分成兩個事件綁定?另外,使用'委託'或'on'而不是'live'。 – meze 2012-02-26 20:15:48

+0

live是因爲它適用的元素是動態生成的,將綁定分開需要第三次綁定mouseup我試圖在儘可能少的行內做到這一點,並且按照你期望的方式在chrome中工作只是想知道爲什麼它不在safari或firefox中工作。分離綁定在所有瀏覽器中都能正常工作,雖然在時間上可能會有點兒缺陷 – rickstain 2012-02-26 22:11:30

+0

您是否檢查過event.which的值?插入'console.log(event.which)'並在這裏發佈結果。 – iappwebdev 2012-02-28 11:01:52

回答

0

看來,即使沒有按下按鈕,Firefox將e.which設置爲1。

Demo

相關問題