2013-01-02 11 views
0

jQuery 모바일에 많은 문제가있어 정말 머리를 쓰고 싶습니다.pageChange는 이전 이벤트를 제거하지 않습니다.

나는이 코드를 사용하여 페이지를 가지고 :

$(document).on('pageinit ',function(){ 
$("#phone_number").on("blur", function (event, ui) { 


    $.mobile.changePage("<?php echo base_url(); ?>mobile/products_by_phone", { 
    type: "POST", 
    data: {phone : $('#phone_number').val() }, 
    transition: "flip"}); 

}); 
}); 

이제 페이지는 다음 코드 containsthe 유효한 HTML 및 jQuery를 모바일의 마크 업이 있습니다 : 내가 페이지를 변경할 때

$(document).on('pageinit ',function(){ 
alert(); 
}); 

지금 작동을 , 그러나 blur 이벤트를 다시 호출하면 페이지가 두 번 변경되고 다시 4 번, 8 번 등이 수행됩니다.

브라우저를 다시 누르면 버튼이 작동하지만, 아무리 시도해도 앞으로 아무 것도 나타나지 않습니다.

참고 : 나는 어쩌면 생각했습니다 그것이 흐림 및 changePage는 흐림 화재 그래서 난 버튼을 추가하고 클릭에 바인딩하지만 같은 일이

  • I을 happpend 시도를 발생 때마다에 관련이

    • 아마 내가 실제로 document에 바인딩한다는 사실 때문에 페이지 ID에 바인딩을 시도했지만 전혀 작동하지 않았다 (이벤트가 바인드되지 않았기 때문에 아무 일도 발생하지 않음), 그런 다음 이벤트를 생성하는 것을 시도했지만 그 또한 시도했다. 사건을 묶지 않았다.

    왜 이런 일이 발생합니까?

  • 답변

    1

    init 이벤트를 바인드 할 페이지를 추가하기 만하면됩니다.이 바인딩을 한 번 수행하기를 원한다면 좀 더 구체적으로해야합니다.

    예 :

    $(document).on('pageinit', '#page1', function(e){...}); 
    

    는 페이지 ID로 #의 PAGE1를 교체합니다.

    +0

    감사합니다. –

    0

    저는 jQuery 모바일에 익숙하지 않지만, changePage() 함수가 AJAX 호출을 사용하여 새 페이지 컨텐츠를로드한다고 가정합니다. 이 경우 기존 이벤트 핸들러가 남아있게되며 매번 더 많은 이벤트를 추가하기 만하면됩니다.

    .off() 함수를 사용하여 (다시) 바인딩하기 전에 이벤트 처리기를 제거해보십시오.

    +0

    그게 작동하지 않았다 ... –

    0

    이것은 일반적인 jQuery 모바일 문제입니다. 여러 이벤트가 같은 요소에 바인드되어 발생합니다. 이전 페이지로 돌아갈 때마다 동일한 이벤트를 다시 바인드합니다.

    이 문제에 대한 2 가지 해결책이 있습니다.

    이벤트를 일부 요소에 바인딩하기 전에 동일한 이벤트가 아직 바인드되지 않았는지 확인하십시오.

    예 : http://www.codenothing.com/archives/2009/event-filter/

    또는 :

    당신이 이벤트를 바인딩 할 때마다, 그것을 전에 바인딩을 해제하면 이벤트 필터의 전체 구현을 찾을 여기

    $('.menu-browse:Event(!' + touchEvent + ')').each(function(){ 
        $('.menu-browse').bind(touchEvent, function(e) { 
    
        }); 
    }); 
    

    .

    예 :

    $(document).unbind(); 
    $(document).bind('pageinit', function(e) { 
    
    }); 
    

    또는 :

    $(document).die(); 
    $(document).live('pageinit', function(e) { 
    
    }); 
    

    또는 귀하의 경우

    :
    $(document).off(); 
    $(document).on('pageinit',function(){ 
        alert(); 
    }); 
    

    는 안타깝게도이 문제에 대한 없음 방탄 솔루션이 있습니다.

    +0

    글쎄, 처음에는 '구문 오류, 인식 할 수없는 표현 : 지원되지 않는 의사 : 이벤트'와 꺼짐 및 죽기가 둘 다 작동하지 않고, 똑같은 일이 일어나고 있으며 여전히 응답하지 않습니다. 앞으로 단추가 작동하지 않는 이유. 새 페이지에서 중요하다면 내 사건 역시 구속력이 없습니다 ... –

    관련 문제