0

誰かが同じ署名でイベントハンドラーを定義した結果は何であるかを説明できますか?例:

// event handler 1
$('form.custom select[data-customforms!=disabled]').on('change', function() { 
    console.log('1');
});

// event handler 2
$('form.custom select[data-customforms!=disabled]').on('change', function() { 
    console.log('2');
});

それは悪い習慣ですか?実行の順序は何ですか?これに関連するブラウザ固有の動作はありますか?Javascriptのイベントハンドラーを拡張できますか?

4

4 に答える 4

1

その後、両方のハンドラーが実行されます。ハンドラーに匿名にするのではなく、名前を付けると、ハンドラーを個別に破棄できます('change'イベントのすべてのハンドラーを完全に削除する必要はありません)。

于 2013-02-06T07:13:30.930 に答える
1

その結果、添付されたすべてのイベントが順番に実行されます。これは通常、特定のイベントで複数の機能を実行するために使用されます。

上記の場合、最初1にコンソールにログインし、次に2、適用されたのとまったく同じ順序でログインします。

欠点は、イベントを削除するchangeと、そのイベントに関連付けられているすべてのイベントハンドラーが削除されることです(この場合、console.logステートメントを持つ両方のハンドラー)

これを克服するために、イベントの名前空間を使用できます。

于 2013-02-06T07:16:02.093 に答える
1

要素で複数のイベントハンドラーを許可するJQuery。これは、古いものを上書きしないことを意味します。実行の順序はわかりませんが、ランダムである可能性があります。

于 2013-02-06T07:16:13.190 に答える
0

JQueryセットイベントにバインドを使用します。つまり、イベントに追加するのではなく、イベントを置き換えるのではなく、最初にイベントを削除してから設定する必要があります。

于 2013-02-06T07:16:35.633 に答える