2013-07-06 3 views
0

다음 페이지에서 이벤트를 바인드하는 유일한 방법은 옵션이 아닌 onclick = "..."내에 직접 넣는 것입니다. JQM ajax를 통해 페이지가로드 된 후 아무 것도 클릭 할 수 없으며 바인드 할 수 없습니다.jQueryMobile은 다음 페이지에서 클릭 수를 바인드하지 않습니다.

$(document).bind('pageinit', function() { 
    $('#link').on('click', function() { 
     alert(); 
     return false; 
    }); 
}); 

<div data-role="page" class="pages"> 
    <a id="link" href="#">link</a> 
</div> 

답변

0

data-role=page 요소를 해결하기 위해 클래스를 사용하지 마십시오. 항상 ID를 사용하십시오. 클래스를 사용하면 때때로 엉뚱한 동작이 나타납니다.

<div data-role="page" id="page1"> 
    <a id="link" href="#">link</a> 
</div> 

당신은 page1pageinit 이벤트 내부에 #linkclick 이벤트를 바인딩 할 수 있습니다 : 당신은 모든 페이지에 대한 공통 pageinit을 사용하려는 경우,

$(document).on('pageinit', '#page1' ,function() { 
    $(this).on('click', '#link',function(e) { 
     e.preventDefault(); 
     alert("Clicked"); 
     return false; 
    }); 
}); 

그러나 (바람직하지 않은) 해당 클릭을 문서에 바인딩 할 수 있습니다.

$(document).bind('pageinit', function() { 
    $(document).on('click', "#page1 #link" , function(e) { // or simply "#link" 
     e.preventDefault(); 
     alert("Clicked"); 
     return false; 
    }); 
}); 
+0

'pageinit'는 한 번만 페이지를 실행합니다. 그래서 이벤트는 한 번만 첨부됩니다. jQM과 함께'ready'를 사용하십시오. – krishgopinath

관련 문제