2012-03-19 8 views
1

私は関数を複数回呼び出す必要があるこのコードを持っています。jQueryで関数を複数回呼び出すことをお勧めしますか?

$(window).resize(function() { 
    centerBox(); 
}); 

$(window).scroll(function() { 
    centerBox(); 
}); 

centerBox(); 

これは信じられないほど乱雑です。これを書くにはより良い方法がありますか?

+0

centerBox()内で行うことは非常に依存していますか? plzはより多くの情報を提供しています... – aProgrammer

+1

私はそれが機能の使用のポイントだと思った。 'centerBox()'の中にあるすべてのコードを複数の場所に置くのではなく、単に 'centerBox()'を呼び出します。 – MetalFrog

+0

これをシリアルで実行する必要があるので、あるイベントが発生したときにもう一方のイベントが終了するまで待機する必要がありますか? – themis

答えて

5

あなたは3行にコードを縮小することができます:

$(window).resize(centerBox); 
$(window).scroll(centerBox); 
centerBox(); 

そしてもちろん、あなたはトップ

であなたの関数を定義するために持っているか、あなたもそれを組み合わせることにより、2行でそれを使用することができますしかし、それはちょっと面倒です。

$(window).resize(centerBox).scroll(centerBox); 
centerBox(); 
+1

* "もちろん、あなたの関数を上に定義しなければなりません" *関数*宣言でない場合*。それが関数式である場合のみ。 –

+1

そして '$(window).resize(centerBox).scroll(centerBox);'または '$(window).bind(" resize scroll "、centerBox);' –

4
var f = function() { 
    centerBox(); 
}; 

$(window).resize(f).scroll(f); 
f(); 
3

私はそれが厄介だとは思わない;あなたがしたいことを正確に記述します。それらの名前が空白であれば、複数のイベントへの結合をサポートし.on以来

$(window).on("resize scroll", centerBox).trigger('resize'); 

にさらに

$(window).resize(centerBox).scroll(centerBox).trigger('resize'); 

$(window).resize(centerBox).scroll(centerBox); 
centerBox(); 

、さらにと:それはあなたにそれを短縮することができ、言いました - 分離された。

2

+呼び出しをバインドできます。

$(window).on("scroll resize", centerBox).scroll(); 
関連する問題