将数据从一个页面传输到另一个jQuery Mobile

时间:2014-12-09 16:27:22

标签: javascript jquery cordova jquery-mobile

我使用PhoneGap按照这个优秀的教程(link)创建地理定位应用程序。不幸的是,我遇到了一个我无法弄清楚的问题。令我头疼的相关部分是:

//Section 1

$('#history').on('pageshow', function () {

tracks_recorded = window.localStorage.length;
$("#tracks_recorded").html("<strong>" + tracks_recorded + "</strong> workout(s) recorded");

$("#history_tracklist").empty();

for (i = 0; i < tracks_recorded; i++) {
    $("#history_tracklist").append("<li><a href='#track_info' data-ajax='false'>" + window.localStorage.key(i) + "</a></li>");
}

$("#history_tracklist").listview('refresh');
});

//Section 2

$("#history_tracklist li a").on('click', function () {

$("#track_info").attr("track_id", $(this).text());

});

//第3节

$('#track_info').on('pageshow', function () {

var key = $(this).attr("track_id");

$("#track_info div[data-role=header] h1").text(key);

var data = window.localStorage.getItem(key);

data = JSON.parse(data);
});

第1节工作正常,数据存储,创建列表没有任何问题。但是在第2节中,当一切都变成地狱时。通过单击元素,应该创建一个新属性(track_id),但它不会。因此,在第3节中,&#34; var键&#34;没有获得价值,因此,&#34; var data&#34;也将为null。你可以想象,那里没有任何作用。我在这做错了什么?我只包括了我认为相关的代码,但如果需要更多代码,我会这样做。 Thansk!

1 个答案:

答案 0 :(得分:1)

在第2部分中,我认为您只需要将点击处理委托给&#34;#history_tracklist&#34;容器,如下:

$("#history_tracklist").on('click', "li a", function () {
    $("#track_info").attr("track_id", $(this).text());
});

如果没有代表团,你就有一条规则说:

  

当点击li a中的任何现有#history_tracklist元素时,执行我的功能

通过委托,你有一条规则说:

  

点击li a中的任何现有或未来 #history_tracklist元素时,执行我的功能