0

我正在使用 JQM 创建和应用程序,但是我想保留一些历史记录,以便用户可以返回,但是当我返回它时它似乎在一个页面上,它无法加载 ajax。我所有的页面都是外部的,并在pageinit事件中加载。应该注意的是,相同的代码结构适用于除此页面之外的所有其他页面,但这不是我在代码中看到的错误。请看下面的代码:

HTML:

<!doctype html>
<html lang="en">
<head>
    <title>Music App</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1,maximum-scale=1">
    <link rel="stylesheet" href="http://jquerymobile.com/demos/1.3.0/css/themes/default/jquery.mobile-1.3.0.css" />
    <script src="http://code.jquery.com/jquery-1.8.2.min.js"></script>
    <script src="http://jquerymobile.com/demos/1.3.0/js/jquery.mobile-1.3.0.js"></script>
    <script src="./javascript/music.js"></script>
    <script src="./javascript/soundmanager2.js"></script>
</head>
<body>
    <!--load all songs by genre-->
    <div data-role="page" data-add-back-btn="true" id="genretracks">
        <div data-role="header" data-position="fixed">
            <h1>Genre Tracks</h1>
        </div>
        <div data-role="content">
            <ul data-role="listview" data-filter="true" data-filter-placeholder="Search list..." id="genretracklist">
            </ul>
        </div>
    </div>
</body>
</html>

JavaScript:

 $(document).on( "pageinit", "#genretracks", function( e ) {
var passedId = (passDataObject.selectedHref != null ? passDataObject.selectedHref : window.location.href).replace( /.*id=/, "" );
var surl =  "http://localhost/musicapp/includes/genretracks.php";
$.ajax({
    type: "GET",
    url: surl,
    data:  "Genre="+passedId,
    dataType: "jsonp",
    cache : false,
    jsonp : "onJSONPLoad",
    jsonpCallback: "genretrackscallback",
    crossDomain: "true",
    }).done(function(){ 
        $("a").bind("click",function(){
            passDataObject.selectedHref = this.href;
        }); 
    }).fail(function(){ 
        alert("$.get failed!"); //replace with failed dialog 
    })
});


 function genretrackscallback(rtndata) 
 { 
var data="";
for(j=0;j<=rtndata.length -1;j++)
{
    data = data + "<li><a href='./player.html?id="+rtndata[j].track_id+"' data-transition='slide' id="+rtndata[j].track_name+"><h3>" + rtndata[j].track_name + "</h3><p><strong>" + rtndata[j].artist_name + "</strong></p><p>" + rtndata[j].genre_name + "</p></a></li>";
}
$('#genretracklist').html(data);
$('#genretracklist').listview('refresh'); 
 }

当我单击由上面的函数创建的列表中的一个项目时,它会触发另一个基于 id 的 javascript 函数并将用户带到另一个外部页面。这一切都很好,但是当用户按下时,上面的功能在多次尝试后不会触发或触发一次。如何确保在用户返回时触发此功能?

4

0 回答 0