2013-04-25 5 views
0

문제는 제가 시작하기 위해 요소를 클릭 할 수 있다는 것입니다. 그러나 S 키를 눌러 텍스트 요소 -> 단락에서 요소를 변경 한 후에는 더 이상 사용할 수 없습니다. 클릭 만하면 클릭 수는 등록되지 않습니다.jQuery가 등록되지 않았습니다.

이것은 사용중인 코드이며 첫 번째 클릭을 등록하지만 요소 전환 이후에는 두 번째 클릭을 등록하지 않습니다. :)

답변

3

$('#dynamic')이 반환하는 요소가 더 이상 존재하지 않습니다. 이벤트 핸들러를 바인딩 이벤트 위임을 사용해야합니다 :

$(document).on('click', '#dynamic', function() { 
    ... 
}); 
+0

Works 아주! 감사합니다 힙을 :) –

0

당신이 사라 입니다 원래 요소를 교체 할 때 - 함께 직접 결합 된 모든 핸들러. 다시 작성한 지점에서 핸들러를 다시 리 바인드하거나 요소가 이미 텍스트 영역인지 여부에 대한 테스트를 추가하려는 경우 위임 된 이벤트 핸들러를 사용할 수 있습니다.

$(document).on('click', '#dynamic', function() { 
    if (this.tagName === "TEXTAREA") return; // already a textarea, so no action needed 
    log('`Clicked`'); 
    var text = $('#dynamic').text(); 
    $('#dynamic').replaceWith('<textarea id="dynamic">' + text + '</textarea>'); 
}); 
관련 문제