8

だから、jquery-mobile が持っているカスタムの複数選択コントロールが好きで、それを使いたいと思っています。そのため、put data-role="none" を提案しないでください。しかし、オプションのリストが長い場合、選択リストのデフォルトの動作が新しいダイアログウィンドウで開かれることを望んでいません。

その動作を望まない理由は、iPad ではうまく動作しないためです。ダイアログの左側にある「X」を使用して閉じるのが難しくなります。何らかの理由で、iPad では応答しなくなりましたが、デスクトップでは正常に動作します。

4

3 に答える 3

9

そのため、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
                });
            } 
于 2012-06-28T16:26:10.023 に答える