2013-08-13 4 views
0

pageinit 이벤트에서 내 페이지의 특정 <li>에 대한 클릭을 jQuery Mobile에서 트리거하려고 시도하고 있습니다.pageinit에서 jQuery Mobile으로 클릭 트리거링

내가 성공적으로 클릭을 유발할 수

그러나 나는 라인에 오류가 :

var currentPage = $.mobile.activePage;

Error: TypeError: currentPage is undefined

무엇을 달성하려고하는 것은 그 reminder의 매개 변수는에를 통해 전달되는 경우 URL을 입력 한 다음 <li>에 대한 클릭을 트리거하고 싶습니다. 잘못된 jQM 이벤트 (pageinit)를 사용하고 있는지 확실하지 않지만 어떤 이유로 "활성 페이지"가없는 것으로 보입니다.

$(document).on('pageinit', function (event, ui) { 

    var page = $(event.target); 

    page.find("li.static_nav").on('click', function() { 
     var currentPage = $.mobile.activePage; 
     var subheader = currentPage.find("#static_page_sub_header"); 
     var target = $(this).attr("data-target"); 

     $(this).siblings().removeClass('active'); 
     $(this).addClass('active').find('a').clone(true, true).appendTo(subheader.empty()); 

     currentPage.find(".static_panel").hide(); 

     return false; 
    }); 


    if (page.find('#p_content').length !== 0) { 
     var url = $.mobile.path.parseUrl(document.location.href); 
     var query_string = url.search; 
     if (/reminder/i.test(query_string)) { 
      $('li.static_nav:eq(1)', $.mobile.activePage).trigger('click'); 
     } 
    } 

}); 
+1

pageinit은 일단 페이지가로드를 처음 발사 전용입니다. 페이지가 이미 캐시에있는 경우 (이미로드 된 경우) 페이지로 돌아갈 때이 이벤트는 시작되지 않습니다. 새 페이지 나 캐시 된 페이지에 관계없이 페이지가 표시 될 때마다 페이지 쇼 이벤트가 발생합니다. – Drew

+1

위 코드의 if 문 부분을 pageshow 이벤트로 이동하려고 시도하지만 클릭 바인딩은 pageinit에 그대로 두십시오. – Drew

+0

@Drew Awesome, 정확히 내가 사용했던 것입니다. 찾고. 이상하게도 아직 내 애플리케이션 로직을 내 코드의'pageshow' 이벤트에 추가 할 필요가 없습니다. (그래도 자리 표시자를 가지고 있지만). 제출하고 싶다면 이것을 답으로 받아들이는 것이 더 행복 할 것입니다.하지만,'pageshow' jQM 이벤트를 사용하여이 일을하는 또 다른 방법이 있습니까? – crmpicco

답변

1
는 pageinit 이벤트에서와의 pageshow 이벤트에 다음 코드를 이동

:

$(document).on('pageshow', function (event, ui) { 

var page = $(event.target); 

if (page.find('#p_content').length !== 0) { 
    var url = $.mobile.path.parseUrl(document.location.href); 
    var query_string = url.search; 
    if (/reminder/i.test(query_string)) { 
     $('li.static_nav:eq(1)', $.mobile.activePage).trigger('click'); 
    } 
} 

});