2011-06-13 1 views
4

Jquery Mobile은 페이지를 하이재킹하고 콘텐츠를로드하여 페이지에 삽입하여 작동합니다.jquery mobile - div에 콘텐츠로드

페이지에 다른 콘텐츠를 삽입하려고하면 문제가 발생하는 것으로 보입니다.

필자는 index.html과 page2.html 파일을 가지고 있습니다. 그래서 같은 사업부의 각 페이지의 내용을 포장 정상적인 방식으로 JQuery와 모바일을 설정 해요 : 사용자 탭 페이지 2에 갈 때

<div id="container" data-role="page"> 
    // my content 
<a href="page2.html">go to page 2</a> 
</div> 

, 그것은 좋은 슬라이드 효과를 않습니다. 위치 표시 줄의 URL은 다음과 같습니다. index.html # page2.html

jquery mobile 앵커를 사용하여 페이지의 내용을 주입하고 전환을 적용합니다. 좋은 영원한 일은 다음 부분까지 훌륭하게 작동합니다.

page2.html에서 일부 외부 데이터를로드하고 div에 주입하는 섹션이 있습니다.

<a href="http://www.somedomain.com/myata.php" class="ajaxtrigger" data-role="none">mydata</a> 
<div id="target"></div> 
<script src="js/code.js"></script> 
<script src="js/loader.js"></script> 
<script type="text/javascript"> 
$(document).ready(function(){ 
    $('.ajaxtrigger').trigger('click'); 
}); 
</script> 

난 데 문제는 내가 JQuery와 모바일 전환을 사용하도록 설정하면이 스크립트가 작동하지 않습니다. div에 데이터를로드하지 않습니다. 파머.

누구나 내가 그 div에 콘텐츠를 불러오고로드하려면 어떻게해야하는지 알고 있습니까?

+0

나는 지금이 같은 문제를 겪고있다. 솔루션을 찾았거나 Ajax로드를 해제 했습니까? – Adam

+0

가능한 중복 [Jquery Mobile - $ .mobile.changepage 외부 .JS 파일을로드하지 않음] (http://stackoverflow.com/questions/7449402/jquery-mobile-mobile-changepage-not-loading-external-js-files # answer-7449731). 이 대답은 무엇을해야하는지 설명하지만,'document.ready' 이벤트 핸들러를 제거하고 전역 범위에 스크립트를 배치해야합니다 (JS를 사용할 수있는 DOM 요소 다음에 배치하면'document. 준비가 필요 없음). 또한이 문서 페이지의 상단에있는 큰 노란색 섹션을 체크 아웃하십시오. http://jquerymobile.com/demos/1.1.1/docs/api/events.html – Jasper

답변

0

$(document).ready(function(){ $('.ajaxtrigger').trigger('click'); });을 사용하여 index.html에서 page2의 클릭/탭을 캡처 한 다음 page2.html에 데이터를 삽입 하시겠습니까?

그렇다면 페이지간에 이러한 방식으로 데이터를 전달할 수 없으므로 작동하지 않습니다. page2.html의 주요 사업부를 #page2의 ID를주는 시도하고 내가 가지고있어 pagebeforeshow 방법 (http://jquerymobile.com/test/#/test/docs/api/events.html)

$('div#page2').live('pagebeforeshow',function(event, ui){ 
    $('div#page2 div#ajax_loaded_content').load('url_to_load_from.php'); 
}); 
+0

실제로 index.html에 링크가 있습니다. page2.html. 다른 페이지에 대한 기본적인 링크. page2.html에서, 나는 클래스 ajaxtrigger와 링크를 클릭하면 YQL을 사용하여 쿼리를 실행 한 다음 href 태그의 url 결과를 클래스 ajaxtrigger와 함께 div에로드하는 코드가있는 js 파일이 있습니다. 이드의 표적. jquery 모바일 전환을 사용하면 데이터가 div에로드되지 않습니다. – Robbiegod

0

를 사용 비슷한 문제 (위의 설명에서 언급 한 바와 같이)와 나는 그것을 (적어도 나를 위해) 알아 냈다. jQuery Mobile은 아약스를 통해 다음 페이지를로드 할 때 이전 페이지를 DOM에 유지하므로 뒤로 버튼이 올바르게 작동합니다. 문제는 두 번째 페이지에서 DOM 요소 (특히 ID)를 참조하기 위해 javascript를 사용하는 경우 이전 페이지의 요소가 여전히 DOM에 있음을 고려해야한다는 것입니다. ID는 고유하도록 설계되었으므로 document.getElementById()은 신뢰할 수 없으므로 $("#myDiv")도 아닙니다.

CSS 클래스가 고유하지 않도록 디자인되었으므로 클래스 이름 (예 : $(".myDivClass"))으로 DOM 요소를 참조하고 있습니다. 부작용은 자바 스크립트에서 변경 한 내용이 숨겨진 모든 페이지에도 적용되지만 작업이 완료된다는 것입니다. 내가 입력 할 때 염두에 두어야 할 또 다른 아이디어는 각 <div data-role="page">에 고유 ID를 부여하고 대신 $("#myInnerDiv")을 사용하는 쿼리 요소를 제공하는 것입니다.

잘하면 도움이됩니다.

+0

안녕하세요 아담, 생각을 공유해 주셔서 감사합니다. 나는 이것을 시험해 볼 것이다. 나는 그것을 작동시킬 수 있었지만, 나는 내 페이지에서 적은 코드를 사용하고 싶었고, 모바일 앱에서도이 작업을하고 싶었지만 xml 파일을 소비하는 문제에 부딪쳤다. 내가 할 수있는 한 빨리 다시보고하고 class vs ids를 사용하는 것이 내 문제의 원인인지 살펴볼 것입니다. :) – Robbiegod

0

이 시도 :

$('page2.html').bind('pageshow', function() { 
    $('.ajaxtrigger').trigger('click'); 
}); 
+1

그것을 시도하고 그것은 아무것도 바뀌지 않았다 ... – Robbiegod

0

또 다른 옵션은 중복 ID가 문제가되지 않도록, 각 페이지로드 조작 할 DOM 요소에 대한 고유 ID를 생성하는 것입니다 아담 설명합니다.나는 이것을 C# (면도기 문법)에서 이렇게했다 :

@{ string headerAutoGenSym = "header_" + new System.Random().Next(1000000000); } 
@section header 
{ 
    <div id="@headerAutoGenSym"></div> 

    <script type="text/javascript"> 
     $(function() { 
      $(document).bind("pageinit", function() { 
       $.get(
        '@Url.Action("myAjaxURL")', 
        function (data) { 
         $('#@headerAutoGenSym').append(data); 
        } 
       ); 
      }); 
     }); 
    </script> 
}