2013-01-23 4 views
0

마지막 Rails gem 업데이트에 따라 jQuery v가 1.9로 업데이트되어 내 .live() 바인딩에 관한 오류가 발생합니다 ...jQuery 1.9 .live() removed ... 내 스크립트가 더 이상 작동하지 않음

$('#tags.tab-pane.active #tag-list li span.myTag').live "click", (e) -> 

는 내가

$("#tags.tab-pane.active #tag-list li").on "click", "span.myTag", (e) -> 

을 시도 .. 지금은 잘못하지만 내가 무엇을 사용해야합니다 ... 잘못도있어? "on"또는 "delegate"

+2

'.on'........ – Rafay

+0

"너무 잘못"어떤 오류가 나고 있습니까? –

+2

jQuery 1.7부터 사용되지 않음 – Alexander

답변

4

당신이 원래 DOM에 아니지만이 아래에 추가 된 것 일단 적용 요소를 추가하는 경우

$('body').on('click','#tags.tab-pane.active #tag-list li', function(e){ 
    //carry out function 
}); 
3

live는 잠시 사용하지 않으며 더 이상 지원되지 않습니다. 즉,이 코드가 실행될 때 이벤트가 바인드 할 수 있도록 "리"요소가 DOM에 있어야 작동하려면 당신은 위해 http://api.jquery.com/on/

$("#tags.tab-pane.active #tag-list li").on("click", "span.myTag", (e) -//NOT WORKING 

"의"사용해야합니다.

당신은 어떻게 될 것 라이브 사용하고는 "의"사용하는 해당 구현 :

$(document).on('click','#tags.tab-pane.active #tag-list li span.myTag',function(){...}) 

당신은 이벤트를 결합하는 "DOM을 더 나은 또는 더 깊은"선택기를 사용하려고한다 오히려 문서보다 그래서 그 사건은 매번 dom의 위로 거품을 일으키지 않아도됩니다. 이벤트를 바인딩 할 때 문서를 대체하는 선택기가 있어야합니다. 그렇지 않으면 작동하지 않습니다.

당신이 요소가 DOM에있는 후 요소에 이벤트를 직접 결합 할 수있는 것보다, 이벤트 바인딩 코드를 실행하는 방법을 알아낼 수있는 경우 :

:

$('#tags.tab-pane.active #tag-list li span.myTag').on('click',function(){}) 

은 동일합니다

$('#tags.tab-pane.active #tag-list li span.myTag').click(function(){...}) 
+0

내가 사용하고있는 것처럼 jQuery와 Rails 및 애셋 파이프 라인 ..이 스크립트는 애플리케이션 레이아웃과 함께로드되며 선택 도구는 존재하지 않습니다. 나는이 스크립트를 해당 레일 뷰에 삽입해야한다고 생각한다. 맞습니까? – erwin

+0

스크립트를 실행할 때 선택자가없는 경우 이벤트를 문서에 첨부 할 수 있습니다. 이는 라이브 사용과 동일합니다. 내 대답에 두 번째 코드 블록을 참조하십시오 ... 또는 요소를 이미 페이지에있는 코드를 실행하는 방법을 알아낼 수있는 경우 그냥 일반 클릭 메서드를 사용할 수 있습니다 .. 내 대답을 업데이트합니다. –

관련 문제