탐색 할 때 Jquery Mobile이 DOM에 일부 페이지를 유지하므로 앞뒤로 이동할 때 페이지가 여러 번 방문 될 수 있습니다.페이지가 DOM에 보관 될 때 on/off를 사용하여 Jquery-Mobile에서 이벤트를 올바르게 언 바인드하는 방법은 무엇입니까?
나는 아래와 "중첩 된 요소 바인딩을"포함이 바인딩을 수행하는 모든 내 페이지 로직, 내부 같은 페이지에 결합하고있어 경우
// listener for the page to show:
$(document).on('pagebeforeshow.register', '#register', function() {
// stuff
// page event bindings:
$(document).on('click.register', '.registerSubmitter', function(e) {
// do something
});
});
돌아 간다 이리저리 내 결합 중첩되어 원인을 첨부합니다 여러 번.
지금과 같이이 문제를 해결하려고 (... 작동하지 않습니다) : 그래서 첫 번째 바인딩이 통과 할 수 있도록하고있어
$(document).on('click', '.registrySubmitter', function(e) {
if ($(this).attr('val') != true) {
$(this).attr('val') == true;
// do something
}
});
을하고 나는 다른 모든 바인딩 시도를 차단하는 함께 따라옵니다.
이 방법이 효과가있는 것은 아니지만 최적의 방법은 아닙니다.
질문 :
방법과 이벤트 바인딩이 제대로 언 바운드해야/Off 양식이? 일반적인 방법 (모두 죽이기) 또는 바인딩마다이 바인딩을 수행해야합니까? 더 중요한 것은 더 중요합니다. 사용자가 페이지를 방문하거나 페이지를 떠날 때 바인딩을 한 번 수행 한 상태로 유지하거나 바인드/바인딩 해제하는 것이 성능면에서 현명한 방법입니까?
감사합니다.
편집 :
그래서 내가 지금처럼 pageHide을 수신 한 후 내 모든 이벤트의 네임 및 해요 : 나는 사용자 정의 대화 상자를 닫습니다 어느 때
$(document).on('pagehide.register', '#register', function(){
$(document).off('.registryEvents');
});
을이 바인딩을 해제하는 것 같지만, 그것은 또한 화재/페이지에서 selectmenu를 클릭하면 페이지를 떠나기 전에 제 바인딩을 잃어 버릴 수 있습니다. 그래서 부분적인 대답, 나는 off()를 사용해야하지만, 실제로 왼쪽에있는 페이지에 바인드하는 방법과 select 메뉴를 열고 닫는 방법은 무엇입니까?
나는 앱이 초기화 될 때 pageinit 한 번만 실행 생각했다. 새 페이지를 추가 할 때마다 실행됩니까? – frequent
예, 의사 페이지가 초기화 될 때마다 실행됩니다. – Jasper
두 번째 제안을 pagebeforeshow 내부에서 사용했습니다.이 두 번째 제안은 레지스터 페이지를 앞뒤로 갈 때 여러 바인딩이 발생했습니다. 그래서 전 세계적 범위에서 그렇게해야합니까? ... – frequent