2012-06-15 6 views
1

나는 현재 하나 개의 사이트에서 일하고 있어요 : 나는이 작품을 좋아 상업 또는 주거 버튼을 클릭합니다,하지만 당신은 jQuery를에서 "토글"페이지에 서비스를 갈 때 그냥 작동하지 않습니다 지금 http://dlt.tribehosting.com/solutionjQuery 모바일 전환 충돌 Jquery?

- 실제로 모든 jQuery 스크립트가 작동을 멈 춥니 다 (홈페이지의 슬라이더와 동일).

페이지가 실제로 다시로드되는 경우 사용자가 다른 링크로 이동하여 모든 것이 손상 될 때까지 모두 양호합니다. 내가 (머리글에서 볼 수있는) 그것을 사용하고있는 것처럼 (문서) .ready 기능과 관련이 있습니다.

이 충돌을 방지하거나 jQuery 토글이 탐색 링크를 통해 방문했을 때 모든 페이지에서 작동하도록하는 방법은 무엇입니까 ??

감사

+0

'$'대신'jQuery'를 사용해 보았습니까? – gcochard

+0

무슨 뜻인지 정말로 모르시겠습니까? – Peter

+0

'$'는'jQuery'의 별명입니다. 스크립트에서 $를 jQuery로 변경하면 실제로 충돌이 발생하지 않아야합니다. – gcochard

답변

1

귀하의 문제는 당신이 가져-로하는 AJAX를 통해 DOM 페이지에 대한 코드를 실행 document.ready를 사용하고 있다는 점이다. 즉, DOM에 추가되는 각 페이지의 이벤트에 바인딩하려는 경우 pageinit 또는 pagecreate을 사용해야합니다.

변경 :

$(function(){ 
    var sidebar = $('.hor-nav'); 
    sidebar.delegate('a.inactive','click',function(){ 
     sidebar.find('.active').toggleClass('active inactive'); 
     $(this).toggleClass('active inactive'); 
    }); 
}); 

하려면 다음 .hor-nav 요소가 항상 존재하지 않는 반면

//run this code when a pseudo-page is added to the DOM 
$(document).delegate('[data-role="page"]', 'pageinit', function(){ 

    //only get the .hor-nav elements in this pseudo-page 
    var $sidebar = $(this).find('.hor-nav'); 

    //no need to delegate here since the elements for this page exist in the DOM now 
    $sidebar.find('a').bind('click',function(){ 
     $sidebar.find('.active').toggleClass('active inactive'); 
     $(this).toggleClass('active inactive'); 
    }); 
}); 

이 항상 DOM (document)에 존재하게됩니다 요소에 이벤트 위임을 사용합니다 DOM이 외부 페이지의 일부인 경우 DOM

document.ready 이벤트에 의존하는 다른 코드가있는 것 같습니다. jQuery Mobile 웹 사이트에는 해당하지 않아야합니다. 이 문서를 보시오 : http://jquerymobile.com/demos/1.1.0/docs/api/events.html (큰 노란색 경고에주의하십시오)

+0

Indeed ... 나는 모든 코드를 documentready에 따라 움직였습니다. 이제는 작동합니다! 도움을 위해 많은 감사를드립니다! – Peter

+0

실제로 다른 이상한 점이 있습니다. 페이지로 이동하면 http://lb.vg/Sq684와 상업 광고를 클릭하면 활성 클래스가 적용되지만 주거로 돌아 가면 클래스가 전환됩니까? 이유가 무엇입니까? – Peter

+1

모든 링크가 바인딩되도록 a.inactive 선택자가 'a'로 업데이트되어야합니다 이 대답을 반영하도록 내 응답을 업데이트했습니다. 'a.inactive'선택은 cur 대여하지 않는 링크. 일부는 아닙니다. 사이트의 어느 섹션으로 가서 비활성 링크를 클릭 한 다음 첫 번째 링크를 다시 클릭하면 클래스가 변경되지 않음을 알면이 사실을 테스트 할 수 있습니다. – Jasper