イベントハンドラーをバインドし、jQueryでそのハンドラーをすぐに実行する必要があることがよくあります。これまで、私はこの怠惰なフェイクパターンを使用してコードをDRYに保ちました。
$(...).bind('event', function() {
...
}).trigger('event');
今日は、他のハンドラーがすでにバインドされていてevent
、このようにイベントをトリガーしたときにも実行されたため、これに噛まれましたが、想定外だったため、多くの問題が発生しました。その時に実行されました。
この問題を解決するために、パターンを次のように変更しました。
var handler = function() {
...
};
var element = $(...);
element.bind('event', handler);
handler.call(element);
これは私が期待するように機能しますが、罪のように醜く、非常に冗長なので、このパターンをjQueryプラグインにカプセル化することを検討しています。
$(...).bindAndExecute('event', function() { ... });
jQuery.bind()
オプションや他の方法でこれに相当するものを見つけることができませんでしたが、何かを逃した可能性があります。私が考えていなかった、これを行うためのより簡潔な方法はありますか?車輪の再発明はしたくありません。