2012-04-25 9 views
0

jQuery Mobileが選択メニューを開いたり閉じたりするときを検出する方法は?私はjQuerymobileとのPhoneGapを使用してい

カスタムメニューを使用している場合、私はそれがクラス「UI-selectmenuスクリーン」とdiv要素は、「UI-スクリーン隠さ」もクラスを持っているかどうかを確認するのは簡単です知っていますしかし、私の問題は、私はこの機能を「クリック」イベントがトリガされた場合、私は崩壊した選択メニューをクリックしたとき、私は正確に、知らないの引き金ことができないということですが、私は試してみました:

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

とこれには多くのバリエーションがありますが、クリックイベントはありません。

+1

あなたの要素は動的なので、 'bind()'はうまくいかないかもしれません。最も近い静的な親の 'on()'の委譲バージョンを使ってみてください – elclanrs

答えて

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(); 
+0

は明らかに動作しません –

関連する問題