use named functions when binding an event handler to a javascript eventにお勧めします。関数をthis
オブジェクトに渡す必要がある場合、どうすればよいですか?
例えば、どのように私は直接doFancyStuff
を呼び出すことにより、以下の無名関数を置き換えます:
$(document).on('change', 'input.fancy-textbox', function() {
doFancyStuff($(this));
});
function doFancyStuff($textbox) {
// fanciness
}
あなたが他の規則を指摘するならば、私は上記のコードで破壊される可能性があります余分なポイント。明確にするために
、私はそうはい、私はちょうどこのような何か行うことができ、複数の場所から私の例ではdoFancyStuff()
メソッドを呼び出したい:あるとして
$(document).on('change', 'input.fancy-textbox', doFancyStuff);
function doFancyStuff() {
var $textbox = $(this);
// fanciness
}
残念なことに関数は複数の場所から呼び出されます。 'this'は' $ textbox'ではありません。にアクセスする。私が必要とするものに合わせて機能を変更する方法についての提案はありますか? – ajbeaven
2番目の例はこれを回避する方法ですが、私が最初に匿名関数を持つコードを好んでいます。さらに、最初の引数がjqueryオブジェクトであるかイベントであるかどうかをチェックし、それぞれ異なる動作をするかどうかをチェックすることもできます。これはインライン関数よりも面倒です。 –
最初の引数がどのような型かを調べるためのテストの例:http://jsfiddle.net/Rzsep/私はそれが好きではないので、私は答えに入れていません。イベントであれば私がテストする方法に注意してください。恐らくテストするのはちょっとした方法ですが、それはちょうど迅速かつ汚れです。 –