2012-02-26 46 views
1

こんにちは私は、左マウスを押してドラッグすると機能を実行しようとしています。jquery codeはchromeでは動作しますがfirefoxやsafariでは動作しません

私は次のコードが間違っているかを把握するように見えることはできません。

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

期待通りのコードはクロームで動作しますが、FirefoxやSafariで、それは関係なく、されて何のマウスオーバーでコードを実行されます押された予想通り

iは、以下の

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

を試してみましたが、再びクロムではなく、FirefoxやSafariで動作します...

私はここでチェックしている:

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

をこれは各ブラウザの左マウスボタンが= 1であることを示しています。

私のことを挫折させてくれるので、すべての助けが素晴らしいよ

+0

なぜ2つのイベントバインディングに分割できませんか。また、 'live'の代わりに' delegate'や 'on'を使います。 – meze

+0

liveが使用されているのは、それが適用される要素がオンザフライで生成されているため、バインディングを分離するためにmouseupの3番目のバインディングが必要です。できるだけ少ない行でそれをやろうとしていました。なぜそれがサファリやファイアフォックスで働いていないのか疑問に思っていました。バインディングを分割することは、すべてのブラウザで動作しますが、時にはバグが少しあります。 – rickstain

+0

event.whichの値をチェックしましたか? 'console.log(event.which)'を挿入し、ここに結果を投稿してください。 – iappwebdev

答えて

0

ボタンが押されていなくても、firefoxはe.whichを1に設定しているようです。

Demo

関連する問題