If a [data-role="page"] div has an ID already when it is loaded, mobilize will wrap the page in a new div, transferring page-related data attrs to the wrapper (role,theme,fullscreen).

This prevents a  ID from being overwritten for use in our page navigation model, which would have prevented css and scripting from applying.

Fixes #93
This commit is contained in:
scottjehl 2010-10-09 00:41:01 -04:00
parent dc3ff3b67e
commit 85c063eb94

View file

@ -201,6 +201,20 @@
}
}
//wrap page and transfer data-attrs if it has an ID
function wrapNewPage( newPage ){
var copyAttrs = ['data-role', 'data-theme', 'data-fullscreen'], //TODO: more page-level attrs?
wrapper = newPage.wrap( "<div>" ).parent();
$.each(copyAttrs,function(i){
if( newPage.attr( copyAttrs[ i ] ) ){
wrapper.attr( copyAttrs[ i ], newPage.attr( copyAttrs[ i ] ) );
newPage.removeAttr( copyAttrs[ i ] );
}
});
return wrapper;
}
if ( url ) {
// see if content is present already
var localDiv = jQuery( "[id='" + url + "']" );
@ -227,8 +241,15 @@
// setPageRole( newPage );
// mobilize( newPage );
// changePage( jQuery( ".ui-page-active" ), newPage, transition, back );
jQuery( this ).replaceWith(
jQuery( this ).find( '[data-role="page"]' ).eq( 0 ).attr( "id", fileUrl ) );
//find new page div
var newPage = jQuery( this ).find( '[data-role="page"]' ).eq( 0 );
if( newPage.attr('id') ){
newPage = wrapNewPage( newPage );
}
jQuery( this ).replaceWith( newPage.attr( "id", fileUrl ) );
var newPage = jQuery( "[id='" + fileUrl + "']" );
setPageRole( newPage );
mobilize( newPage );