2013-04-30 53 views
0

我對.ready()功能有一定Jquery (mobile)行動,以初始化正確值的HTML元素(如$ DEF VAR通過):javascript jQuery停止?

如果我評論這一行動(見腳本的結尾)的腳本作品完美(但顯然沒有必要的html'select'初始值)。

如果我使用腳本運行正常的動作(直到最後一個動作),但它永遠不會到達下面的語句「get_status()」 ......

<script type="text/javascript"> 

    var gauge_humidity1, 
     gauge_temp1, 
     gauge_temp2, 
     gauge_temp3; 


    jQuery(document).ready(function() { 


     //### EVERYTHING WORK IF I COMMENT ALL THIS JQUERY'S ### 
     //initiate sliders 
     //OLD jQuery('#select_mode').val('$mode').slider('refresh'); 
     jQuery('#select_mode').val('$mode') 
     jQuery('#select_r1_water').val('$r[0]'); 
     jQuery('#select_r2_heat').val('$r[1]'); 
     jQuery('#select_r345_window').val('$r[2]'); 
     jQuery('#select_r6_shadow').val('$r[5]'); 

     //initiate select_light 
     jQuery('#select_light').val('$s_ini[2][5]'); 
     ### END OF COMMENT ### 


     ### IF I UNCOMMENT THE GET_STATUS() NEVER RUNS ### 
     get_status(); 
    }); 

</script> 

 <form id="form_settings" action="" method="POST"> 
      <div id="section" data-role="collapsible-set"> 

       <div data-role="collapsible" data-collapsed="false"> 
        <h3> 
         Control 
        </h3> 
        <div data-role="fieldcontain"> 
         <label for="select_mode"> 
          Modo 
         </label> 
         <select name="select_mode" id="select_mode" data-role="slider" onchange="update_mode()"> 
          <option value="Manual"> 
           Manual 
          </option> 
          <option value="Auto"> 
           Auto 
          </option> 
         </select> 

        </div> 
       </div> 
      </div> 
     </form> 
+0

控制檯中的任何錯誤? – 2013-04-30 10:06:06

+2

請考慮在www.jsfiddle.net上發佈示例 - 使我們可以輕鬆地查看哪些內容有效,哪些錯誤(如果有)等。) – Joe 2013-04-30 10:06:09

+0

首先刪除'success中的額外逗號:function(data) {},' – 2013-04-30 10:17:29

回答

0

我覺得問題是$(document).ready(),相當於$(document).ready()JQM$(document).bind('pageinit')

只要有一個看看jQuery Mobile的文檔:http://jquerymobile.com/demos/1.1.1/docs/api/events.html

重要:Use $(document).bind('pageinit'), not $(document).ready()

你的jQuery學習的第一件事就是打電話給 $(文件)。就緒內部代碼()函數所以所有的東西都會在 DOM被加載後立即執行。但是,在jQuery Mobile中,Ajax用於在導航時將每個頁面的 內容加載到DOM中,DOM準備好的 處理程序僅對第一頁執行。要在加載和創建新頁面時執行代碼,可以綁定到pageinit事件。 此事件在本頁底部詳細解釋。

編輯:

<script type="text/javascript"> 
     jQuery('#page_settings').bind('pageinit', function() { 
     // Your code here 
     }); 
</script> 
+0

添加了'最終'的代碼解決方案。感謝您的指導! – s1za 2013-04-30 21:55:01

0

解決方案:

剛剛添加的 'pageinit' 接近HTML DIV數據角色= 「頁面」,並應用於「#page_settings頁面(而不是文檔),因爲控件是。

<div data-role="page" id="page_settings"> 
    <script type="text/javascript"> 
     jQuery('#page_settings').bind('pageinit', function() { 
      //initiate sliders 
      jQuery('#select_mode').val('$mode').slider('refresh'); 
      jQuery('#select_r1_water').val('$r[0]').slider('refresh'); 
      jQuery('#select_r2_heat').val('$r[1]').slider('refresh'); 
      jQuery('#select_r345_window').val('$r[2]').slider('refresh'); 
      jQuery('#select_r6_shadow').val('$r[5]').slider('refresh'); 

      //initiate select_light 
      jQuery('#select_light').val('$s_ini[2][5]').selectmenu('refresh'); 
     }); 
    </script>