Tôi dường như gặp sự cố với việc mở và đóng chương trình Bảng điều khiển JQM 1.3.Bảng điều khiển jQuery Mobile 1.3 không hoạt động sau khi thay đổi trang
EDIT: Đây là cho JQM 1.3.x không 1.4+
Nó là hơi khó để giải thích, vì vậy tôi chỉ cần thực hiện một fiddle :)
Có rất nhiều xảy ra trong fiddle , nhưng nó chỉ là một mẫu của một ứng dụng lớn hơn nhiều và truyền tải vấn đề.
Làm thế nào để tái tạo:
- Đến Fiddle
- On Fiddle mở Panel và đi đến trang Hai
- Ở Trang Hai Panel được mở ra và đi đến trang Một
- Cố gắng Mở Bảng điều khiển bây giờ trên trang một, nó không có gì.
trình duyệt bị ảnh hưởng:
EDIT: Điều này dường như được cố định trong Chrome 30.0.1599.101 m
- Chrome 28.0.1500.95 m
- IE 10.0.9200.16635
- Safari // Latest Ver
- Android WebView (4.2.2)
trình duyệt không bị ảnh hưởng:
- Firefox 23
- Opera 12,16
Liên kết đến Fiddle:
Liên kết đến bài viết khác
https://github.com/jquery/jquery-mobile/issues/6308
http://forum.jquery.com/topic/panel-not-responding-after-page-change
EDIT: Vì vậy, Firefox mang lại cho tôi một lỗi mà không phải Chrome hoặc IE làm.
Khi tôi bấm vào để trở lại trang một, tôi nhận được:
Type Error: elem is undefined
Các lỗi được ném bởi JQ 1.9.1, tôi theo dõi nó lại vấn đề này:
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;
}
`
Lưu ý:
Đừng đặt dữ liệu trên phi nguyên tố vì nó sẽ không được xóa (# 8335).
Github Issue Link: https://github.com/jquery/jquery/pull/1232
OG Code:
$('.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
Bạn nên sử dụng '.panel ('open')' và '.panel ('close')' không ẩn và chuyển đổi. – Omar
Nếu bạn đang sử dụng JQM 1.4alpha1, có một lỗi trong tiện ích bảng điều khiển, điều này cũng có thể giải thích vấn đề của bạn – frequent
@Omar ở đây là một câu đố chia nhỏ bằng cách sử dụng Mở và Đóng, nhưng tôi có cùng kết quả. http://jsfiddle.net/XhupG/ – Red2678