귀하의 문제는 당신이 가져-로하는 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 (큰 노란색 경고에주의하십시오)
'$'대신'jQuery'를 사용해 보았습니까? – gcochard
무슨 뜻인지 정말로 모르시겠습니까? – Peter
'$'는'jQuery'의 별명입니다. 스크립트에서 $를 jQuery로 변경하면 실제로 충돌이 발생하지 않아야합니다. – gcochard