У меня, похоже, проблемы с программным открытием и закрытием панели JQM 1.3.jQuery Mobile 1.3 Панель не работает после изменения страницы
EDIT: Это для JQM 1.3.x не 1.4+
Это довольно трудно объяснить, так что я только что сделал скрипку :)
Там есть много происходит в скрипкой , но это всего лишь образец гораздо большего приложения и передает проблему.
Как повторить:
- Перейти к скрипке
- На Fiddle открыть панель и перейти на вторую страницу
- На второй странице открытой панели и перейти на страницу One
- Попробуйте открыть Теперь панель на первой странице ничего не делает.
Браузеры Затронутые:
EDIT: Это, кажется, должно быть зафиксировано в Chrome 30.0.1599.101 м
- Chrome 28.0.1500.95 м
- IE 10.0.9200.16635
- Safari // Latest Ver
- Android WebView (4.2.2)
Браузеры НЕ Затронутые:
- Firefox 23
- Opera 12,16
Ссылка на Fiddle:
Ссылка на другие сообщения
https://github.com/jquery/jquery-mobile/issues/6308
http://forum.jquery.com/topic/panel-not-responding-after-page-change
EDIT: Так Firefox дает мне ошибку, что ни Chrome или IE делать.
Когда я нажимаю, чтобы вернуться к первой странице, я получаю:
Type Error: elem is undefined
Ошибка брошенной JQ 1,9.1, я проследить его обратно к этому:
A method for determining if a DOM node can handle the data expando
acceptData: function(elem) {
// Do not set data on non-element because it will not be cleared (#8335).
if (elem.nodeType && elem.nodeType !== 1 && elem.nodeType !== 9) {
return false;
}
var noData = elem.nodeName && jQuery.noData[ elem.nodeName.toLowerCase() ];
// nodes accept data unless otherwise specified; rejection can be conditional
return !noData || noData !== true && elem.getAttribute("classid") === noData;
}
`
Обратите внимание на:
Не устанавливать данные о неприменении элемента, поскольку он не будет очищен (# 8335).
Github Issue Ссылка: https://github.com/jquery/jquery/pull/1232
OG Код:
$('.showMenu').on('click', function(){
$.mobile.loading('hide');
$.mobile.activePage.find('#'+$.mobile.activePage.attr('id')+'P').panel("toggle");
});
$('.btnMenuItem').on('click', function(event){
myPgActions.nav(event, function(target){
$.mobile.changePage(target);
}, false);
});
var myPgActions = {};
myPgActions = {
nav: function(event, callback, manualHash){
var PID = $.mobile.activePage.attr('id'),
target = (!!event) ? event.target.name : manualHash;
$("#"+PID+"P").panel("close");
if(PID != 'loading') $("#"+PID+"Iframe").hide();
if(PID == target){
$("#"+PID+"Iframe").hide('fast', function(){
$("#"+PID+"Iframe").attr('src', "");
myPgActions.update(PID, target, 'refresh', function(target){
callback(target)
});
});
}else{
this.update(PID, target, 'change', function(target){
callback(target);
});
}
},// end get
update: function(PID, target, type, updateCallback){
var ifReady = $.Deferred();
if(type == 'refresh'){
this.buildUrl(PID, function(url){
$('#'+PID+'Iframe').attr('src', url);
ifReady.resolve();
$.when(ifReady).then(function(){
updateCallback('#'+PID+'Iframe')
});
});
}else if(type == 'change'){
this.buildUrl(target, function(url){
$('#'+target+'Iframe').attr('src', url);
ifReady.resolve();
});
$.when(ifReady).then(function(){
updateCallback('#'+target);
});
}
}, // end set
buildUrl: function(page, buildCallback){
switch(page){
case 'dash':
var mobileSiteUrl = 'URL with options for iframe'
setTimeout(function(){buildCallback(mobileSiteUrl);},25);
break;
case 'local':
var mobileSiteUrl = 'URL with options for iframe'
setTimeout(function(){buildCallback(mobileSiteUrl);},25);
break;
}// End Switch
}
}// End Obj
Вы должны использовать '.panel ('open')' и '.panel ('close')' не скрывать и не переключаться. – Omar
Если вы используете JQM 1.4alpha1, в панели виджета есть ошибка, которая также может объяснить вашу проблему. – frequent
@Omar здесь - разветвленная скрипка с использованием Open и Close, но у меня такой же результат. http://jsfiddle.net/XhupG/ – Red2678