クラスを手動で設定する場合は最善を尽くすことができますが、JQM の将来の改善のために、今のところ両方を行うことができます。
Gajotresの答えを改善したところ、 jsFiddleになりました
var panel = $("#rightpanel"),
DEFAULT = {
POSITION: {
left: {type: "left"},
right: {type: "right"}
},
DISPLAY: {
overlay: { type: "overlay" , className: "ui-panel-display-overlay"},
reveal: { type: "reveal" , className: "ui-panel-display-reveal"},
push: { type: "push" , className: "ui-panel-display-push"}
}
},
lastState = {
display: DEFAULT.DISPLAY.push,
position: DEFAULT.POSITION.left
};
function options (key, value) {
return panel.panel("option", key, value);
}
function position (pos) {
// { left | right }
if (
DEFAULT.POSITION[pos] &&
DEFAULT.POSITION[pos].type !== lastState.position.type
){
panel.panel("close");
lastState.position = DEFAULT.POSITION[pos]
panel
.toggleClass("ui-panel-position-left ui-panel-position-right");
return options("position", pos);
}
}
function display (disp) {
// { overlay | reveal | push }
if (
DEFAULT.DISPLAY[disp] &&
DEFAULT.DISPLAY[disp].type !== lastState.display.type
) {
panel.panel("close");
lastState.display = DEFAULT.DISPLAY[disp]
panel
.removeClass("ui-panel-display-reveal ui-panel-display-overlay ui-panel-display-push")
.addClass(display.className);
return options("display", disp);
}
}
$(document).on('pagebeforeshow', '#index', function(){
$(document).on('click', '#openpanel', function() {
position("right");
panel.panel("open")
});
});