Ich habe einige Probleme, über die ich keine Dokumentation im Internet finden konnte.jQuery Mobile Panel Navigation Einfrieren/Hängen
Das Problem ist, dass das Navigationsmenü manchmal nach dem Navigieren auf der Seite hängen bleibt. Es passiert ziemlich oft, so dass Sie in der Lage sein sollten, es zu replizieren, indem Sie die temporäre Website, die ich aufbaute: https://infinite-temple-73811.herokuapp.com
Versuchen Sie, von Seite zu einer anderen Seite zu navigieren und zu wiederholen, und es sollte nach einigen Klicks geschehen.
Ich bin nicht sicher, warum dies geschieht, aber mein Verdacht ist, dass es etwas mit diesem den Menüpunkt ‚Snabba frågor‘ und ‚Topplistan‘ initiiert AJAX-Aufrufe zu tun.
Auch erwähnenswert ist, dass es eine einzelne HTML-Datei ist.
ich ruft AJAX wie folgt
$(document).delegate('#startQuiz', 'click', function() {
$.ajax({
headers: {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
type: 'GET',
url: '/quickQuiz',
async: false,
success: quizStarted,
fail: onFail,
statusCode: {
401: function() {
$.growl.error({message: "Error vid validate..."});
}
}
}).done(function() {
console.log('Login Ajax done!');
});
});
Und sieht die quizStarted Methode wie folgt aus:
var quizStarted = function (data, textStatus, xhr) {
console.log("Validate done.");
var result = jQuery.parseJSON(data);
$('#imagePath').attr("src", result.image);
$('#quickQuestion').text(result.question);
$('#quickOne').text(result.quickOne);
$('#quickTwo').text(result.quickTwo);
$('#quickThree').text(result.quickThree);
$('#quickFour').text(result.quickFour);
$('#currentPoints').text(result.points);
location.href = "#quickQuiz";
}
Im Back-End alles in Ordnung zu suchen scheint, es ist nur die Navigation Panel, das hängt. Alles andere bleibt reaktiv während es passiert.
EDIT1: Das Panel Code:
<div data-role="panel" id="panel" data-position="right" data-display="reveal" class="ui-btn-right">
<h2>Meny</h2>
<ul data-role="listview">
<li data-icon="home"><a href="#home">Home</a></li>
<li><a id="startQuiz">Snabb frågor</a></li>
<li><a id="displayHighscore">Topplistan</a></li>
<li class="adminPage"><a href="#admin">Admin</a></li>
<li class="login"><a href="#dologin">Login</a></li>
<li class="logout" data-icon="delete"><a id="logoutBut">Logout</a></li>
</ul>
</div>
EDIT2:
Nachdem einige weitere Untersuchung Ich glaube eigentlich nicht, dass es mehr auf die AJAX-Anrufe in engem Zusammenhang steht. Denn wenn Sie nur zwischen Home und Login navigieren, passiert es immer noch, sie initialisieren keine AJAX-Anrufe.
Panel-ID ist auf allen Seiten identisch? In Ankern haben Sie "#", z. 'href =" # startQuiz "'. – Omar
Panel IDs sind die gleichen ja. Das Auslassen von href ist für die Seiten gedacht, die vorher AJAX-Aufrufe benötigen, die Navigation erfolgt nach dem Ajax-Aufruf mit 'location.href =" # ... "' danach. –
Ihr Problem wird durch die Verwendung der gleichen ID auf allen Panels verursacht. Wenn das Panel auf allen Seiten gleich ist, verwenden Sie _external panel_ (http://stackoverflow.com/a/21857463/1771795) oder verwenden Sie für jedes Panel eine eindeutige ID. Um zwischen den Seiten zu wechseln, verwenden Sie '$ .mobile.pageContainer.pagecontainer (" change "," #page ID oder URL ")' (http://stackoverflow.com/a/19186330/1771795) – Omar