0

2 つのページ間でデータをやり取りしようとしています。

これが私がこれまでに持っているものです: http://jsfiddle.net/8JXTT/49/

$("#secondpage").attr("val", "test value"); を使用して、2 番目のページに属性を設定します。

そして、この属性にアクセスするには、次を使用します: var val1= $(this).attr('val');

ただし、「リンク ボタン」ごとに値が異なる必要があります。

このフィドルでは、ボタンに設定する必要があるときに、ページ自体に属性を設定していますか?

ボタンが押されたときに次のページで値にアクセスできるように、各ボタンに関連付けられた一意の値を渡すようにコードを修正するにはどうすればよいですか。

フィドルコード:

HTML

<div data-role="page" id="firstpage">
    <div data-role="header">
         <h1>First Page</h1>
    </div>
    <div data-role="content" id="links"></div>
    <div data-role="footer">
         <h4>Page Footer</h4>
    </div>
</div>
<div data-role="page" id="secondpage">
    <div data-role="header"> <a href='#' class='ui-btn-left' data-icon='arrow-l' onclick="history.back(); return false">Back</a>
        <h1>Bar</h1>
    </div>
    <div id="pagecontent" data-role="content"></div>
    <div data-role="footer">
         <h4>Page Footer</h4>
    </div>
</div>

JS

$(document).ready(function () {

    for (var i = 0; i < 4; i++) {

        var button = '<a data-role="button" href="#secondpage" data-theme="c" class="ui-btn ui-btn-corner-all ui-shadow ui-btn-up-c"><span class="ui-btn-inner ui-btn-corner-all"><span class="ui-btn-text">Link Button</span></span></a>';

        $('#links').append(button);

        $("#secondpage").attr("val", "test value");
    }

    $('#secondpage').live('pageshow', function () {
        var val1 = $(this).attr('val');
        $("#pagecontent").html(val1);
        console.log('val is ' + val1);
    });

});
4

1 に答える 1

1

あなたのコードにはいくつかの問題があります。

  1. valボタンをクリックすると値が設定されるのではなく、ボタンの作成中に値を直接設定しています。
  2. $.dataデータを設定するために使用する必要があります
  3. トリッキーな問題は、ボタンの onclick ハンドラーを作成するときに、おそらく誤って「クロージャー」を作成することです。これは、すべてのクリック ハンドラーが の同じ値 (最後の値セット) を使用することを意味しますi

これを修正するには、次のことを行う必要があります。 1. ページのデータを設定する新しいボタンにクリック イベントをバインドします。 2. ループの範囲外になるボタンを作成するメソッドを作成し、ループから呼び出します。

変更されたコードを見てください。動作するはずです http://jsfiddle.net/azZVk/12/ また、クロージャーについて少し知っておくと役立ちます。たとえば、この質問を見てください: ループ内の JavaScript クロージャー – 簡単な実用例

于 2012-07-19T15:06:05.317 に答える