0

正しい値 ($def var として渡される) で html 要素を初期化するために、関数に対していくつかのJquery (mobile)アクションがあります。.ready()

このアクションにコメントすると (スクリプトの最後を参照)、スクリプトは完全に機能します (ただし、必要な 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>
4

2 に答える 2

0

解決:

コントロールがあったため、html div data-role="page" の近くに「pageinit」を追加し、(ドキュメントではなく)「#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>
于 2013-04-30T21:56:04.233 に答える
0

問題は、JQM$(document).ready()相当するものだと思います$(document).ready()$(document).bind('pageinit')

jQuery Mobile のドキュメントをご覧ください: http://jquerymobile.com/demos/1.1.1/docs/api/events.html

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

jQuery で最初に学ぶことは、$(document).ready() 関数内でコードを呼び出して、DOM が読み込まれるとすぐにすべてが実行されるようにすることです。ただし、jQuery Mobile では、ナビゲートするときに Ajax を使用して各ページのコンテンツを DOM にロードし、DOM Ready ハンドラーは最初のページに対してのみ実行されます。新しいページが読み込まれて作成されるたびにコードを実行するには、pageinit イベントにバインドします。このイベントについては、このページの下部で詳しく説明しています。

編集:

<script type="text/javascript">
        jQuery('#page_settings').bind('pageinit', function() {
         // Your code here
        });
</script>
于 2013-04-30T13:05:35.177 に答える