2012-04-25 1 views
0

jQuerymobile에서 phonegap을 사용하고 있습니다.jQuery Mobile이 선택 메뉴를 열거 나 닫을 때를 감지하는 방법은 무엇입니까?

사용자 정의 메뉴를 사용할 때 "ui-selectmenu-screen"클래스의 div에도 "ui-screen-hidden"클래스가 있는지 확인하기 쉽습니다. 하지만 내 문제는 내가이 기능은 "클릭"이벤트가 트리거되는 경우 내가 무너 선택 메뉴를 클릭하면, 내가 정확히 모르겠지만를 실행할 수 없다는 것입니다, 나는 시도했다 :

$('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; 
}); 

는 다시로드하는 경우 아약스를 통해 이러한 양식 요소는 이전에 새 HTML을 삽입하기 DOM에서 사용자 정의 위젯 요소를 제거해야한다는 것입니다. 옵션을 동적으로 업데이트하는 것이 더 우아한 해결책이 될 수 있지만 그 옵션은 없었습니다.

$('.ui-selectmenu, .ui-selectmenu-screen, .ui-dialog').remove(); 
+0

이 작동하지 않는 것 같습니다. –

관련 문제