2012-02-01 26 views
0

我有jQuery和jQueryMobile的問題。多頁面網站中的jQueryMobile/jQuery問題

我有2頁網站:

<div data-role="page" id="main"> 
     <div data-role="header"> 
      header1 
     </div> 
     <div data-role="content"> 
      <a id="1" href="#detail">link</a> 
     </div> 
    </div> 

    <div data-role="page" id="detail"> 
     <div data-role="header"> 
      header2 
     </div> 
     <div data-role="content"> 
      <div id="foo">content2</div> 
     </div> 
    </div> 

當我按下鏈接我保存ID使用jQuery:

$(document).ready(function(){ 
       var test = 0; 

       $('a').click(
         function() 
         { 
          test= $(this).attr('id'); 
         } 
       );   
      }); 

這一點,一切都很好。問題是,當我點擊鏈接後想要讀出var test時,它不再被保存。

我能做些什麼來防止這種情況發生?

我要讓這樣的事:

$('#foo').html(test); 
+0

什麼是泰豐的問題你的代碼seesm工作的http:/ /jsfiddle.net/eNcFB/保存結束測試 – 2012-02-01 10:46:34

+0

此代碼工作ks,是的。但是當我有整個jQueryMobile網站它不工作。在jquerymobile網站是關於不使用$(document).ready()的東西。我應該使用pageInit(),但我不知道如何。 – gurehbgui 2012-02-01 10:49:35

回答

2

JQM文件:

重要須知:pageInit(),不$(document).ready()

你的jQuery學習的第一件事就是調用代碼插件請參閱 $(document).ready()函數,以便在加載DOM時儘快執行所有操作。但是,在jQuery Mobile中,Ajax用於在導航時將每個頁面的 內容加載到DOM中,DOM準備好的 處理程序僅對第一頁執行。要在加載和創建新頁面時執行代碼,可以綁定到pageinit事件。 此事件在本頁底部詳細解釋。

我也建議在JavaScript中閱讀var ScopeClosures

相關:?

2

從您的意見,您需要使用pageInit閱讀。你試過

$('#main').live('pageinit',function(event){ 

       var test = 0; 

       $('a').click(
         function() 
         { 
          test= $(this).attr('id'); 
         } 
       ); 
}); 
1
var test = 0; 
$('#main').live("pageshow",function(event){ //or pageinit, or pagecreate 
    $('a').click(
        function() 
        { 
         test= $(this).attr('id'); 
        } 
      ); 
});