0

これに関連して非常によく似た質問を見てきましたが、それらはキープレスイベントのみをカバーし、私がやっている方法ではマウスクリックをカバーしていません.

基本的に、ユーザーがマウスの左ボタンまたは右ボタンをクリックしているかどうかを判断しようとしています。私のコード:

$(".class_name").mousedown(function () {

    switch (event.which) {
        case 1: //leftclick
            //...
            break;
        case 3: //rightclick
            //...
            break;
    }
});

これは Safari では意図したとおりに機能しますが、IE や Firefox では機能しません。IE と FF は何も起こらなかったかのように動作しますが、Safari はその特定のクリックのコードを実行します。jQuery は通常、ブラウザー間の互換性に優れているため、コードを別の方法でフォーマットする必要があると推測していますが、正確にはわかりません。

どんな助けでも大歓迎です。御時間ありがとうございます。

4

2 に答える 2

5

ここでの問題は、jQuery のイベント オブジェクトではなく 、グローバルオブジェクトを使用していることです。 window.eventwindow.event一部のブラウザーでのみ機能し、W3C 標準ではありません。

jQuery はイベント オブジェクトを正規化するため、すべてのブラウザーで同じになります。イベント ハンドラーには、その jQuery イベント オブジェクトがパラメーターとして渡されます。あなたはそれを使うべきです。

$(".class_name").mousedown(function (e) {

    switch (e.which) {
        case 1: //leftclick
            //...
            break;
        case 3: //rightclick
            //...
            break;
    }
});
于 2013-04-04T14:06:07.540 に答える
3

関数呼び出しにイベント変数を入れるのを忘れました。

$(".class_name").mousedown(function (/*HERE*/event) {

switch (event.which) {
    case 1: //leftclick
        //...
        break;
    case 3: //rightclick
        //...
        break;
 }
});
于 2013-04-04T14:06:32.563 に答える