0

スタイル/コンパクトさについて質問があります。ドキュメントがロードされたとき、およびイベントがトリガーされるたびに実行したい関数があります。

私のコードは次のようになります。

$('.myClass').each(function(){my_function(etc);});
$('.myClass').keyup(function(){my_function(etc);});

これらの 2 行のコードを 1 行にまとめる方法があるかどうか疑問に思っています。現在は問題なく動作していますが、コードを繰り返しているという事実から、これを行うためのより簡潔な方法があるのではないかと考えています。

.bind() と .on() は私に喜びを与えませんでした。これは、イベントを対象としており、 .each() がイベントではないためだと思います。

誰でも洞察を提供できますか?乾杯

4

3 に答える 3

1

したがって、http://api.jquery.com/jQuery.each/はイテレータです

$.each() 関数は、jQuery オブジェクトを排他的に反復するために使用される $(selector).each() と同じではありません。$.each() 関数は、マップ (JavaScript オブジェクト) であろうと配列であろうと、任意のコレクションを反復処理するために使用できます。配列の場合、コールバックには配列インデックスと対応する配列値が毎回渡されます。(この値には this キーワードを使用してアクセスすることもできますが、Javascript は、 this 値が単純な文字列または数値であっても、常にオブジェクトとしてラップします。) メソッドは、最初の引数である、反復されたオブジェクトを返します。

keyupイベントです: http://api.jquery.com/keyup/

それが原因に合っていることを願っています。何か見逃した場合はお知らせください。:)

これを試して:

$(".myClass").each(my_function(etc))
             .bind("keyup mouseover", my_function(etc));
于 2012-09-23T23:36:28.553 に答える
0

関数ブロックでjavascriptコードを囲む場合:

(function($){
    ...
})(jQuery);

ローカル変数を使用すると、グローバル名前空間(ウィンドウ)を台無しにすることはありません。

次に、その関数ブロック内で、次のような関数を宣言して使用できます。

function my_named_function(etc){};
$('.myClass').each(my_named_function)
    .keyup(my_named_function);

これはあなたの質問に答えますか?

于 2012-09-23T23:32:36.543 に答える
0

次のようなものを使用できます。

my_function=function(){
//do something  
}  
$('.myClass').each(my_function)
             .keyup(my_function);
于 2012-09-23T23:37:15.890 に答える