2010-06-05 3 views
5

CSS-Tricks.com 및 jQuery hashchange event 플러그인의 도움말을 사용하여 만든이 jQuery ajax 탐색 탭 플러그인이 있습니다 (브라우저에서 해시 변경을 감지합니다. 그것을지지하지 않는다).

코드는 여기에 게시하는 약간 긴하지만이 같은 간다 :

1 부) 탭을 클릭하면, 해당 탭의 href 속성을 가져 와서 같은 브라우저 탐색 모음에 추가 '#tab_name': window.location.hash = $(this).attr("href");

파트 2) 내비게이션 막대가 바뀌면 (해시 변경) window.location.hash.substring(1); (하위 문자열은 '#'이없는 'tab_name'만 얻음)이며 다음과 같이 href가 변경됩니다. ajax 함수를 호출하여 표시 할 정보를 가져옵니다.

내가 페이지에 액세스 할 때 내가 넣어 코드의 시작 있도록 자동으로 첫 번째 탭을로드 할 플러그인을 트리거 할

:

if (window.location.hash === '') { // If no '#' is in the browser navigation bar 
    window.location.hash = '#tab_1'; // Add #tab_1 to the navigation bar 
    $(window).trigger('hashchange'); // Trigger a hashchange so 'Part 2' of the plugin calls the ajax function using the '#tab_1' added 
} 

probles은 아니지만에서 FF에서 작동한다는 것입니다 크롬, 제 말은 모든 것이 작동하지만 첫 번째 탭을 얻지 못하기 때문에 $(window).trigger('hashchange');이 작동하지 않는 것 같습니다.

의견이 있으십니까?

참고 : 이전에는 작동했지만 갑자기 Chrome 업데이트가되지 않았습니다.

답변

2

브라우저가 만족스럽지 않은 방식으로 이벤트를 시작한 것으로 의심됩니다. "hashchange"에 대한 처리기는 어디에 정의되어 있습니까? "window"대신에

$('body').bind('hashchange', function() { ... }) 

으로 바인딩 해보기를 권합니다. 그렇다고해도 WebKit 브라우저에서 문제가 발생할 수 있습니다. 그렇다면 <div>을 작성하여 본문 내용을 랩핑하고 바인딩 할 수 있습니다.

+0

글쎄, hashchange는 다음과 같이 정의되어있다 : $ (window) .bind ('hashchange', function() {... – Jonathan

+3

) 문제를 발견했다. $ (window) .trigger ('hashchange') ; hashcnage가 $ (window)에서 정의되기 전에 .bind ('hashchange', function() {... 고맙다. – Jonathan

관련 문제