2012-06-17 2 views
4

다음은 현재 설정 한 내용입니다.Jquery Mobile : 새로운 Ajax가로드 됨 페이지가 없습니다. 새로로드 중입니다. JS

jquery 모바일 프레임 워크에서 두 페이지를 실행하고 있습니다.

  • index.php를

에서이 헤더를 귀찮게

  • article.php 나는 평가라는 JS 파일이 있습니다.

    $(document).ready(function(){ 
        $("#rating_1").click(function() { 
         $("#rating_2").css('backgroundPosition', '0px 0px'); 
         $(this).css('backgroundPosition', '-45px 0px'); 
        }); 
    }); 
    

    내가 index.php를로드 한 후 ratings.js 일에 내 트리거의 article.php 없음으로 이동 :

    여기에 내 JS ratings.js입니다.

    rel="external" 또는 data-ajax="false"을 추가하면 트리거가 작동합니다. 그러나 그렇다면 내 로더 휠을 올릴 능력이 없어졌습니다.

    제안 사항?

    감사합니다. <head></head> 섹션에서 아약스로드하는 동안로드되지 않습니다

    <div id="page" data-role="page"> 
    <!--here--> 
    </div> 
    

    스크립트 : 내부

  • 답변

    3

    : 사용 $(document).bind('pageinit')은하지 $(document).ready()

    당신이 jQuery를 배울 첫 번째 것은 모든 것이 즉시 DOM이로드 으로 실행할 수 있도록 $(document).ready() 함수 내에서 코드를 호출하는 것입니다. 그러나 jQuery Mobile에서 Ajax는 탐색 할 때 각 페이지의 내용을 DOM에로드하는 데 사용되며 DOM 준비된 핸들러는 첫 번째 페이지에 대해서만 실행됩니다. 새 페이지가로드되고 작성 될 때마다 코드를 실행하려면 pageinit 이벤트에 바인드 할 수 있습니다. 이 이벤트는이 페이지 하단에 자세히 설명되어 있습니다.

    시도 :

    $(document).bind('pageinit', function() { 
        $("#rating_1").click(function() { 
         $("#rating_2").css('backgroundPosition', '0px 0px'); 
         $(this).css('backgroundPosition', '-45px 0px'); 
        }); 
    }); 
    
    +0

    위대한 작품. js를 외부 파일에 보관할 수있었습니다. 감사!!! –

    2

    당신은 모든 것을 넣어한다.

    +0

    내가 거기에 ratings.js에서 JS를 넣어해야합니까? –

    +0

    이것이 효과가 있다고 생각합니다. – benck

    2

    문제는 jQuery를로드 Ajax를 통해 페이지 및 따라서, 그것은 단지 페이지의

    <div data-role="page"> </div> 
    

    부분을로드하는 것입니다.

    이런 종류의 문제를 해결하기 위해 세 가지 작업을 수행 할 수 있습니다.

    1.) 이미 시도한 페이지 (데이터 ajax = false로 만드는 것)로 인해 페이지가 완전히 다시로드되고 로더 휠이 표시되지 않습니다.

    2) 당신은 이벤트를 라이브 이벤트를 만들 수 있습니다.

    $("#rating_1").live('click', function() { 
    $("#rating_2").css('backgroundPosition', '0px 0px'); 
    $(this).css('backgroundPosition', '-45px 0px'); 
    }); 
    

    이 그것이 새로운 #의 RATING_1을 찾아서 그것을 클릭 이벤트를 추가 할 것 '을

    3) $(document).ready을 사용하는 대신 $('#myPage').live('pageinit',function(event){}; 기능을 사용할 수 있습니다. 중요

    관련 문제