2012-01-30 3 views
1

jQuery/javascript를 배우고 있으며 기본적인 질문이 있습니다. 왜이 기능이 작동하지 않습니까? 미리 감사드립니다.jQuery로 새 요소 선택

+3

두 번째 조각이 문서 준비 기능에 있지? – benhowdle89

답변

2

$(document).ready이 (가) 실행되기 전에 두 번째 스크립트 섹션이 실행되기 때문에 작동하지 않습니다. 따라서 아직 존재하지 않는 요소에 onclick 처리기를 연결하려고합니다.

$(document).ready(function() { 
    $('<div/>', { 
     id: 'foo', 
     text: 'Does not work' 
    }) 
    .appendTo('body') 
    .click(function() { 
     alert('Success'); 
    });  
}); 

또는 on()를 사용하여 :

$('document').on("click", "#foo", function() { 
    alert('Success'); 
}); 
+0

도움을 주셔서 감사합니다. 정말 감사. 건배 – Mustang31

+1

'$ ('# foo'). on ('click', ...)'을 사용하는 것은'click()'을 사용하는 것과 본질적으로 같습니다. 요소 *가 이미 문서에있는 경우에만 작동합니다. 선택자를'on'에 전달하여 * 위임 *을 사용하면 요소를 만들 때마다 첨부하지 않아도됩니다 :'$ (document) .on ('click', '#foo', ...) '. [참고 문헌 참조] (http://api.jquery.com/on/). – GeReV

+0

@GeReV 죄송합니다. 여전히'live()'를 사용하지 않으려 고합니다. 나는 미래의 독자들을 위해 나의 대답을 편집 할 것이다. – Jivings

1

당신 돼 발생하는 모든 A의 당신이 그것을 추가로

당신은 요소에 click() 이벤트를 부착 중 하나에 의해 작동 할 수 있습니다 $ (document) .ready().

그래서 : 코드의

$(document).ready(function() { 
       $('<div/>', { 
        id: 'foo', 
        text: 'Does not work' 
       }).appendTo('body');  
       $("#foo").click(function() { 
       alert('Success'); }); 
});