Por lo tanto, profundicé profundamente en el javascript jquery mobile (fue doloroso) para saber dónde se realiza esta decisión de pasar a pantalla completa para la lista de selección múltiple. Este código me dice que no hay una bandera como tal que pueda configurar para evitarlo.
Sin embargo, puesto que depende de la altura de la lista (menuHeight), la solución que trabajó para mí era hacer algunos cambios de estilo CSS (reducción de relleno para cada elemento de la lista) para que mi tamaño de la lista se redujo:
.ui-selectmenu-list li .ui-btn-inner a.ui-link-inherit
{
padding: .5em 15px .5em 15px;
}
Si quiere estar seguro de no mostrar el cuadro de diálogo, una solución sucia sería poner algo de sobreescritura en su copia local del código móvil de jquery (odio hacerlo, pero esa es la única forma):
//TODO: vishalkumar : I can override here by replacing below line by if (false)
if (menuHeight > screenHeight - 80 || !$.support.scrollTop) {
self.menuPage.appendTo($.mobile.pageContainer).page();
self.menuPageContent = menuPage.find(".ui-content");
self.menuPageClose = menuPage.find(".ui-header a");
// prevent the parent page from being removed from the DOM,
// otherwise the results of selecting a list item in the dialog
// fall into a black hole
self.thisPage.unbind("pagehide.remove");
//for WebOS/Opera Mini (set lastscroll using button offset)
if (scrollTop == 0 && btnOffset > screenHeight) {
self.thisPage.one("pagehide", function() {
$(this).jqmData("lastScroll", btnOffset);
});
}
self.menuPage.one("pageshow", function() {
focusMenuItem();
self.isOpen = true;
});
self.menuType = "page";
self.menuPageContent.append(self.list);
self.menuPage.find("div .ui-title").text(self.label.text());
$.mobile.changePage(self.menuPage, {
transition: $.mobile.defaultDialogTransition
});
}
Tenía un deseo similar, es una pena que no haya una mejor manera de hacerlo. Necesito manejar eventos popupafterclose en mis múltiples listas de selección (ya que aquí es donde estoy guardando mis datos). Sin embargo, este evento se dispara solo cuando se muestra en modo emergente, pero no en el modo de página. ¿Alguna mejor idea para manejar un caso como este? – scuba88