2013-04-11 2 views
3

jQuery를 (모바일) 폰갭 앱에서 .change 이벤트를 트리거하지

내가 여러 페이지 레이아웃을 가지고 (2 일 나는이 아무 문제가 ... 없었기 때문에), 내 페이지 중 하나에 정말 같은 구조를 가지고 : 나는 body 태그 닫기 전에 (이 순서대로) 다음 스크립트와

<div id="view_offer" data-role="page"> 
     <div data-role="header"> 
      <h1>Edit Offer</h1> 
     </div> 
     <div data-role="content"> 
      <p><label><input id="auto_renew" type="checkbox" name="checkbox-0">Auto renew?</label></p> 
     </div> 
    </div> 

:

<script src="js/cordova-2.5.0.js"></script> 
    <script src="js/jquery-1.8.2.min.js"></script> 
    <script src="js/jquery.mobile-1.3.0.min.js"></script> 
    <script src="js/home_m_scripts.js"></script> 

home_m_scripts.js을 파일 :

$("#auto_renew").change(function(){ 
    alert("Changed!"); 
}); 

변경 이벤트가 발생하지 않지만 손실이 발생합니다.

$("#auto_renew").change(function(){ 
    alert("Changed!"); 
}); 

하려면 :

+1

다음과 같이 변경할 수 있습니다. $ (문서) .on ('변경', '# auto_renew', function() { alert ("변경됨!"); }); – Gajotres

+0

이것은 효과가 있었지만 이상하게 보였습니다. jquerymobile에 대해서는 완전히 나쁜 아이디어가 있었을 지 모릅니다. 그러나 새로운 페이지에 착륙 할 때 모든 것이로드되었다고 생각했습니다 ... –

+0

설명과 함께 답으로 입력하겠습니다. – Gajotres

답변

11
은 코드를 변경

$(document).on('change','#auto_renew',function(){ 
    alert("Changed!"); 
}); 

당신이 이벤트 위임 역할을 다음과 같이 이벤트를 바인딩 할 때. 기본적으로이 바인딩을 실행할 때 객체는 DOM에 존재할 필요가 없습니다.

+0

어떻게하면됩니까? .on 이벤트 안에 새 div를 대상으로 지정 하시겠습니까? "#autoo_renew"아래에 "#stuff"div가 있다고 상상해보십시오. 어떻게해야 $ ("# stuff") 같은 것을 할 수 있습니다 .html ("stuff"); 이 jquery 모바일 페이지 구조는 지옥으로 혼란 스럽습니다. –

+1

예를 들어, 아이디 auto_renew에 이벤트가 있고 아이디 항목이있는 자식 div에서이 $ (this) .find ('# stuff') ... 또는 $ ('# auto_renew'). find ('# stuff') 또는이 $ ('# auto_renew #stuff')를 좋아할 것. – Gajotres

+0

정말 감사합니다. –

관련 문제