2014-04-23 1 views
0

저는 stickyJS를 사용하여 WordPress 웹 사이트에서 끈적한 헤더를 만듭니다. 스크립트를 제대로 대기열에 넣었고 끈적 거리는 것이 완벽하게 작동합니다.jquery를 사용하여 요소에 지속적으로 클래스가 있는지 확인합니다.

내가 달성하고자하는 것은 끊임없이 내가 끈에 대해 설정 한 nav 요소에 "is-sticky"라는 클래스가 있는지 확인하고 CSS의 일부를 변경하는 것입니다. 여기

내가 이미 가지고있는 코드 :

function stickyInit($) 
{ 
$("#site-navigation").sticky({topSpacing:0}); 

window.setInterval(check_sticky,500); 

function check_sticky(){ 
    if($("#site-navigation-sticky-wrapper").hasClass("is-sticky")){ 
     console.log ("Do Something"); 
    } 
} 
} 

jQuery(document).ready(function ($) { 
stickyInit($); 
}); 

이것은 내가 끈적로 탐색을 설정하는 큐에 한 파일의 모든 코드입니다.

위에서 볼 수 있듯이 setInterval을 사용하여 "# site-navigation-sticky-wrapper"요소를 지속적으로 테스트하여 위에서 언급 한 클래스가 있는지 확인하는 루프를 만들었습니다.

이 코드는 작동하며 콘솔에서 메시지를 받지만 반복적으로 사용하지 않고 한 번만 가져옵니다.

그래서 내 질문은 어떻게 클래스가 "끈적 끈적"인지 확인하기 위해이 요소를 지속적으로 테스트하여 탐색 CSS를 대체 ​​할 수 있습니까?

또한 요소에 "is-sticky"클래스가 설정되어 있지 않을 때 (맨 위로 뒤로 스크롤 한 후) 원래 위치로 돌아가려면 어떻게 설정해야합니까? 또는 어쨌든 그렇게 할 것입니까?

+0

왜 setInterval을 사용하고 스크롤 이벤트를 사용하지 않습니까? 그리고 가장 중요한 것은 ... 당신의 질문이 WordPress에 어떻게 연결되어 있습니까? –

+0

이전에 스크롤 이벤트에 대해 들어 본 적이 없으므로 혼란스러워 보입니다. 그리고 내가 워드 프레스 웹 사이트를 완성하려고하기 때문에 맨 위에 말했듯이, 나는 그것이 Wordpress 사이트에 있기 때문에 여기에 게시해야한다고 생각하고 일부 충돌 또는 버그가있을 수 있습니다. wordpress와 관련하여 누락되었습니다 –

+0

여기 링크가 있습니다 스크롤 이벤트 api 워드 프로세서 : http://api.jquery.com/scroll/ 나는 그것이 꽤 js의 문제라고 확신 해요 - WP는 이것과 아무런 관계가 없습니다 :) –

답변

2

Check this fiddle - '끈적 끈적한'수업이 활성화되었을 때 반복적으로 발생합니다. & 정지 지점까지 스크롤하면 nav 위치가 이전 상태로 자동 복원됩니다.

// Your code 
function stickyInit($){ 

    $("#site-navigation").sticky({topSpacing:0}); 

     function check_sticky(){ 
      if ($("#site-navigation-sticky-wrapper").hasClass("is-sticky")) { 
       console.log ("Do Something"); 
      } 
     } 

    window.setInterval(check_sticky,500); 
} 

jQuery(document).ready(function ($) { 

    stickyInit($); 

}); 
+0

안녕하세요, 회신 주셔서 감사합니다, 지금까지 내가 무엇을했는지 볼 수있는 함수에 의해 호출되는 후 setInterval의 위치를 ​​이동합니다. 이것은 내가 전에 가지고 있었던 것과 같은 효과를 가지고 있습니다. 콘솔에서 나는 "Do Something"이라는 문자열을 30 초마다 올렸지 만 그 대신에 나는 그것을 한 번 얻었습니다. 더 이상의 제안? 다시 한 번 감사드립니다 –

+1

@TomBurman 여러 번 실행 중입니다, 콘솔은 중복 console.log 메시지를 축소하고 있습니다. 체크 아웃 http://jsfiddle.net/GW679/1/ – Brett

+0

아마 그 최고의 연습을 추가해야합니다 한 번만 다시 화재가있을 때 실제로는 상단에,하지만 그것은 당신이 원하는 .. 코드 작동 벌금. – PHearst

관련 문제