jqueryのモバイルJavaScriptに深く掘り下げて、このマルチスクリーンリストの決定がマルチ選択リストのどこにあるのかを知ることは苦労しました。このコードは、私がそれを避けるように設定できるようなフラグはないことを私に伝えます。それはリスト(menuHeight)の高さに依存しているので、私のリストのサイズが減少したように、
しかし、私のために働いた修正は、いくつかのCSSの変更(各リスト項目の減少パディング)を作ることだった。
.ui-selectmenu-list li .ui-btn-inner a.ui-link-inherit
{
padding: .5em 15px .5em 15px;
}
ダイアログを表示しないようにしておきたい場合は、jqueryモバイルコードのローカルコピーにいくつかのオーバーライドを入れることです(これは嫌いですが、これが唯一の方法です)。
//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
});
}
私は同様の欲求を持っていましたが、これを行うより良い方法はありません。私は複数の選択リスト(これは私が自分のデータを保存している場所である)でpopupaftercloseイベントを処理する必要があります。ただし、このイベントは、ポップアップモードで表示されているときにのみ発生しますが、ページモードでは表示されません。このようなケースを処理するためのより良いアイデアですか? – scuba88