2016-04-26 11 views
0

Ich schreibe eine mobile jQuery-App, die zwei HTML-Seiten enthält. Wenn der Benutzer von der Seite index.html zur Seite search.html navigiert, sollte jQuery Elemente in die Seite search.html laden.jQuery Mobile löst keine Seitenanzeige zwischen den Seiten aus

Allerdings scheinen die Dinge schiefgelaufen zu sein. Das Skript funktioniert nicht wie erwartet.

index.html

<!DOCTYPE html> 
<head> 
<!-- Include meta tag to ensure proper rendering and touch zooming --> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<meta charset="utf-8"> 
<!-- Include jQuery Mobile stylesheets --> 
<link rel="stylesheet" href="css/jquery.mobile-1.4.5.min.css" ></link> 
<link rel="stylesheet" href="css/mahidol.min.css"></link> 
<link rel="stylesheet" href="css/themes/jquery.mobile.icons.min.css"></link> 
<!-- Include the jQuery library --> 
<script src="js/jquery-1.11.3.min.js"></script> 
<!-- Include the jQuery Mobile library --> 
<script src="js/jquery.mobile-1.4.5.min.js"></script> 
<!-- Cordova sh*ts --> 
<script type="text/javascript" src="cordova.js"></script> 
<script src="js/parameterHandler.js"></script> 
<script src="js/default.js"></script> 
</head> 
<body> 
    <div data-role="page" id="index"> 
    <div data-role="header" data-position="fixed"> 
     <a href="prefs.html" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-gear">Preferences</a> 
     <h1><img src="logo.png" height="15px">&nbsp;Contact</h1> 
    </div> 
    <div data-role="main" class="ui-content"> 
     <form class="ui-filterable"> 
     <a href="search.html" class="ui-btn" data-transition="flip">Search from name</a> 
     <input id="filterBoxList" data-type="search" placeholder="Type here to search from department list"> 
     </form> 
     <ul data-role="listview" data-filter="true" data-input="#filterBoxList" id="list_dept"> 
     </ul> 
    </div> 
    </div> 
</body> 

search.html

<!DOCTYPE html> 
<head> 
<!-- Include meta tag to ensure proper rendering and touch zooming --> 
<meta name="viewport" content="width=device-width, initial-scale=1"></meta> 
<meta charset="utf-8"></meta> 
<!-- Include jQuery Mobile stylesheets --> 
<link rel="stylesheet" href="css/jquery.mobile-1.4.5.min.css" ></link> 
<link rel="stylesheet" href="css/mahidol.min.css"></link> 
<link rel="stylesheet" href="css/themes/jquery.mobile.icons.min.css"></link> 
<!-- Include the jQuery library --> 
<script src="js/jquery-1.11.3.min.js"></script> 
<!-- Include the jQuery Mobile library --> 
<script src="js/jquery.mobile-1.4.5.min.js"></script> 
<!-- Cordova shits --> 
<script type="text/javascript" src="cordova.js"></script> 
<script src="js/parameterHandler.js"></script> 
<script src="js/default.js"></script> 
<style> 
    #listie small{ 
    color: #ccc !important; 
    } 
</style> 
</head> 

<body> 
    <div data-role="page" id="search"> 
    <div data-role="header" data-position="fixed"> 
     <a href="prefs.html" class="ui-btn ui-shadow ui-corner-all ui-btn-icon-left ui-icon-gear">Preferences</a> 
     <h1><img src="logo.png" height="15px">&nbsp;Contact</h1> 
    </div> 
    <div data-role="main" class="ui-content"> 
     <form class="ui-filterable"> 
     <a href="#index" class="ui-btn" data-transition="flip">Search from dept. list</a> 
     <input id="filterBoxName" data-type="search" placeholder="Type here to search from name"> 
     </form> 
     <ul data-role="listview" data-filter="true" data-input="#filterBoxName" id="listie"> 
     </ul> 
    </div> 
    </div> 
</body> 

default.js (beladen das letzte)

$(document).on("pageshow","search.html",function(){ 
    var chx = 0; 
    var m=""; 
    var k=[]; 
    $.mobile.loading("show", { 
      text: 'Loading', 
      textVisible: true 
    }); 
    if(loaded == false) // This will prevent event triggering more then once 
    { 
    for (var t in JSON.parse(localStorage.getItem('hr'))) 
    { 
     m += "<li><a href='#view?id=" + t + "'>" + JSON.parse(localStorage.getItem('hr'))[t].Name + " <small>" + JSON.parse(localStorage.getItem('hr'))[t].Surname + "</small></a></li>"; 
    } 
    $('#listie').append(m).listview('refresh'); 
    loaded = true; 
    } 
    $.mobile.loading("hide"); 
}); 

Dinge scheint nett zu sein, wenn die Seite "Suchen" div wird in index.html platziert (und der Code ist in einer einzelnen Seite verknüpft, nicht in zwei). Es bricht jedoch, wenn ich versuche, die Dateien in zwei Dateien aufzuteilen.

Alles, was ich tun kann, um das zu beheben?

Antwort

0

Nun, gelöst ...

Auch wenn die div auf der gleichen Datei, wenn $(document).on("pageshow",src,function(){...}); mit bis zu src zu zeigen, stellt sicher, dass src Punkte auf die div-ID, nicht die Datei selbst. In diesem Fall ist es $(document).on("pageshow","#search",function(){...});.

Verwandte Themen