2

重複の可能性:
jQuery:同じイベントに対して複数のハンドラー

2つのボタンを作成するjQueryスライダープラグインを使用しています。これらのボタンは、スライダーを制御するために使用されるため、プラグインによってクリックイベントがアタッチされています。アニメーションを処理するために、プラグインとは独立して(Webページにインラインで)独自のmouseover\mouseoutイベントを作成しました。クリック用にも作成したい(ボタンの色が変わるように)。別のクリックイベントハンドラーを作成して、プラグインの機能をオーバーライドまたは中断しますか?それは悪い習慣ですか、そしてより良い方法がありますか?

4

5 に答える 5

3

2つのイベントがあることは問題ありません。オブジェクトには、必要な数のイベントを割り当てることができます。

トリガーされたイベントに応じて異なる関数を起動する可能性が高いため、これは論理的です。また、すべてのjQueryプラグインの99%は、複数のイベントを持つオブジェクトを問題なく処理できます。試してみて、問題があれば質問してください。

良くないのはインラインjsだけです;)

于 2012-10-10T17:49:32.560 に答える
3

すでにバインドされているハンドラーを壊すことはありません。jQueryバインドはイベント登録モデルを使用しているため、複数のイベントハンドラーをサポートします。

addEventListeners/attachEventこれは、従来の方法に比べて使用する利点の1つです。

詳細: https ://stackoverflow.com/a/12627478/297641

于 2012-10-10T17:51:20.640 に答える
1

実際にはそうではありませんが、1つのハンドラーですべての機能を処理できるのであれば、なぜそうしませんか?

于 2012-10-10T17:49:18.327 に答える
1

問題ないはずです。jQueryのAPIを使用して独自のイベントハンドラーを追加するだけで、設定が完了します。jQueryドキュメントから.on()

jQuery 1.4以降、同じイベントハンドラーを要素に複数回バインドできます。

$('#myButton').on('click', myHandler)
于 2012-10-10T17:51:25.600 に答える
0

場合によっては、それは悪い習慣だと思います。1つの要素に複数のイベントハンドラーを作成することは、ほとんどの場合回避できます。十分に快適な場合は、いつでもプラグインのソースを開いて(縮小バージョンでない場合)、変更を含めるようにイベントハンドラーを変更できます。

あなたがそれをすることに不快であるならば、私はあなたがしていることを続けると言うでしょう。より良い選択肢があることを知っておいてください。

これは、プラグインにすでにクリックイベントバインディングがある場合に、別のクリックイベントバインディングを追加することを前提としています。

-マイク

于 2012-10-10T17:54:43.790 に答える