2011-01-27 2 views
3

사이트에 stickyfloat (http://plugins.jquery.com/files/stickyfloat_0.htm)을 구현했습니다. 그것은 하나의 잡았다와 잘 작동합니다. 함수는 $(window).scroll에서 시작하고 $(window).load에서는 시작하지 않습니다. 페이지의 앵커 포인트에 연결하기 때문에이 중 하나를 트리거해야합니다 (http://tre-stage.wdogsystems.com:8000/faq/#does-the-sale-of-my-receivables-have-a - 부정적 - 효과 - 내 - 신용 보고서) 및 스크롤을 시작할 때뿐만 아니라 페이지가로드 될 때 사이드 메뉴를 표시하고 싶습니다.

위 페이지를 보면 원하는대로 작동합니다. 그러나 이것은 동일한 기능을 $(window).load으로 반복했기 때문에 가능합니다. 이것은 나에게 매우 비효율적 인 것처럼 보입니다. 그럼, 둘을 묶는 방법이 있습니까?

예를 들어

:

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

'$ (document) .ready'을 (를) 사용 하시겠습니까? – SLaks

+0

스크롤 이벤트에 첨부하는 것이 좋지 않고 대신 수행 할 작업에 대한 John Resig의 게시물을 참조하십시오. http://ejohn.org/blog/learning-from-twitter/ – bdukes

답변

2

jQuery의 .bind()help 방법은 한 번에 결합 된 여러 개의 이벤트를 할 수 있습니다. 이처럼

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

: 바인드에

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

'scroll'이벤트가 꽤 좋지 않기 때문에 아마 나쁜 아이디어 일 것입니다. 무거운 CPU 부하. 이것은 그것을 두 번 발사 할 것입니다. – jAndy

+0

완벽하게 작동했습니다! 정말 고맙습니다! –

+0

@jAndy : 네 말이 맞아. 편집 됨. – SLaks

2

단지 체인, 같은 :

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

그러나 그것은 아주 나쁜 생각이 이벤트를

아주 좋은 스크롤 부착하는 것입니다 이유 및 훌륭한 해결책 : http://ejohn.org/blog/learning-from-twitter/

0

왜로드시 창 스크롤 이벤트가 발생하지 않습니까? 당신은 ...

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

그것을 분리하고 나중에 더 나은 액세스 할 수 있도록 너무 당신의 스크롤 이벤트를 네임 스페이스 수 그러나 당신이 실제로 원하는 된 경우 DOM이 완전히 포함을로드 보장 (창로드를 실행합니다. 이미지 등) 언급 한 다른 예제는 괜찮습니다. 그러나 .bind() 메서드 대신 .on() 메서드를 사용하십시오.

$(window).on('scroll.myscroll load.myload', function() { 
    // do something on scroll and load events 
});