【问题标题】:Transfer data from one page to another jQuery Mobile将数据从一个页面传输到另一个 jQuery Mobile
【发布时间】:2014-12-09 16:27:22
【问题描述】:

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

//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 节中,“var key”不会得到值,因此,“var data”也会为 null。正如您可以想象的那样,从那里没有任何效果。我在这里做错了什么?我只包括了我认为相关的代码,但如果需要更多,我会这样做。谢谢!

【问题讨论】:

    标签: javascript jquery cordova jquery-mobile


    【解决方案1】:

    在第 2 节中,我认为您只需要将点击处理委托给“#history_tracklist”容器,如下所示:

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

    没有授权,你有一条规则说:

    当单击#history_tracklist 中的任何现有li a 元素时,执行我的函数

    对于委托,您有一条规则:

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

    【讨论】:

    • 成功了!绝妙的解决方案。
    • 很高兴为@cubanGuy 提供帮助。
    猜你喜欢
    • 1970-01-01
    • 2013-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-12-08
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    • 2011-01-02
    相关资源
    最近更新 更多