2011-01-27 8 views
3

サイトにstickyfloat(http://plugins.jquery.com/files/stickyfloat_0.htm)を実装しました。それは1つのつかまりと素晴らしい作品。この機能は$(window).scrollで起動し、$(window).loadでは起動しません。私はそれがページ上のアンカーポイントにリンクしているためにそれをトリガーしたい(http://tre-stage.wdogsystems.com:8000/faq/#does-the-sale-of-my-receivables-have-a私のクレジットレポートの効果)、ページが読み込まれたときにサイドメニューが表示され、スクロールを開始するときだけでなく、サイドメニューが表示されます。

上記のページを見ても、私が欲しいのと同じように機能しています。しかし、これは私が$(window).loadで同じ機能を繰り返したためです。これは私にとって非常に非効率的です。では、2つのチェーンを結ぶ方法はありますか?例えば

$(window).scroll || $(window).load (function() ... 
+0

あなたは '$(document).ready'を意味しませんか? – SLaks

+0

スクロールイベントにアタッチするのが悪い理由とその代わりに何をするのかJohn Resigの記事を参照してください:http://ejohn.org/blog/learning-from-twitter/ – bdukes

答えて

2

jQueryの.bind()help方法は、一度にバインドされた複数のイベントを可能にします。

$(document).bind('ready load scroll', function() { ... }); 
1

説明理由と素晴らしい解決策:http://ejohn.org/blog/learning-from-twitter/

+0

これはおそらく 'scroll'イベントがかなり悪い考えですcpu-load heavy。これはそれを2回発射する。 – jAndy

+0

それは完璧に働いた!どうもありがとうございます! –

+0

@jAndy:そうです。編集されました。 – SLaks

2

バインドでちょうどチェーン、のような::

イベント

に非常に良いをスクロールする添付することは非常に悪い考えですが

$(window).bind("scroll load", ...) 

このよう

$(window).bind('scroll load', function() { 
    // code here triggers for both, scroll & load events 
}); 
0

ロード時にウィンドウスクロールイベントをトリガーしないのはなぜですか?あなたが実際にDOMが完全にロード税込です確保(窓負荷にそれを実行したいとしている場合は、それを隔離するためにもあなたのスクロールイベントを名前空間と、後でそれへのより良いアクセスを持っている...

$(window) 
    .on('scroll.myscroll', function() { 
     // do something on scroll event 
    }) 
    .trigger('scroll.myscroll'); // trigger scroll event on pageload 

しかし、可能性があります。画像など)他の例は問題ありません。しかし.bind()ではなく.on()メソッドを使用してください。

$(window).on('scroll.myscroll load.myload', function() { 
    // do something on scroll and load events 
}); 
関連する問題