2012-07-19 25 views
0

我試圖在兩頁之間傳遞數據。傳遞數據按鈕在jQuery手機按

這是我到目前爲止有: http://jsfiddle.net/8JXTT/49/

所以使用即時通訊的第二頁上設置一個屬性:$( 「#secondpage」)ATTR( 「VAL」, 「測試值」);爲了訪問這個屬性,我使用: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); 
    }); 

}); 

回答

1

我看到一些問題與您的代碼:

  1. 您在創建按鈕時直接設置val的值,而不是讓按鈕設置一次點擊的值。
  2. 您應該使用$.data設置數據
  3. 棘手的問題是,當你做的按鈕創建onclick處理程序,您可能會在不經意間創造一個「封閉」,這意味着所有的點擊處理程序將使用相同的值(最後一個值套)i

要解決這個問題,就需要 1.綁定一個click事件的新按鈕,將設置頁面 2的數據創建一個方法來創建一個按鈕,就失去了你的循環範圍,從環

看看改變的代碼調用它,它應該工作 http://jsfiddle.net/azZVk/12/ 此外,將是有益的,你知道關閉一點點。看看這個問題,例如: JavaScript closure inside loops – simple practical example

+0

謝謝,我點了後退按鈕時稍微更新了你的提琴以清除div內容。這可以防止用戶在更新之前快速查看先前的div值:jsfiddle.net/azZVk/13 – 2012-07-19 15:49:39