0

jQuerymobileでphonegapを使用していますが、

カスタム メニューを使用する場合、「ui-selectmenu-screen」クラスの div にも「ui-screen-hidden」クラスがあるかどうかを確認するのは簡単ですが、私の問題は、この関数をトリガーできないことです。折りたたまれた選択メニューをクリックすると、「クリック」イベントがトリガーされる場所が正確にわかりません。

$('a.ui-btn').bind('click',function() {
    if (  $('.ui-selectmenu-screen').hasClass("ui-screen-hidden");  ) {
       DO WHAT EVER...
    }
});

これには多くのバリエーションがありますが、クリックイベントがないようです....

4

1 に答える 1

0

今日この問題に遭遇したばかりで、次の解決策を開発しました。

$("select").change(function() {

    // Ignore events if the interval has already been established
    if (this.interval)
        return false;

    // Self invoking anonymous function to prevent polution of parent scope 
    // in some environments (IE), passes 'this' as element
    (function (element) {

        // Set an interval to watch for the window to close
        element.interval = setInterval((function callback() {

            // Find the widget
            var $widget = $('#'+element.id+'-menu').closest('.ui-selectmenu');

            // If it has been closed DO STUFF and clear the interval
            if ($widget.hasClass('ui-selectmenu-hidden')) {

                // YOUR CODE HERE

                clearInterval(element.interval);

            }

            return callback;
        })(), 1000);

    })(this);

    return false;
});   

また、これらのフォーム要素を ajax 経由で再読み込みする場合は、新しい HTML を挿入する前にカスタム ウィジェット要素を DOM から削除する必要があることにも注意してください。オプションを動的に更新する方がより洗練されたソリューションですが、私にはそのオプションがありませんでした。

$('.ui-selectmenu, .ui-selectmenu-screen, .ui-dialog').remove();
于 2012-07-24T19:03:46.983 に答える