2013-07-28 7 views
1

나는이 문제에 대해 많은 질문을 보았지만 여전히 우연을 찾지 못했습니다. 나는 실제로 무엇이 잘못되었는지 이해하는 데 도움이 될 수 있습니다. 첫 번째 텍스트 영역이 잘 기능을 발사동적으로 생성 된 요소에 .keyup을 바인딩하십시오.

그때 추가

내가 텍스트 영역 및 클래스 이름하여 바인딩 된 .keyup 기능이 (내 용어는 다음과 정확하지 않을 수 있습니다) 두 번째 텍스트 영역은 동적으로 동일한 기능

내 .keyup 기능

에게 해고 의도 된
$('.trans').keyup(function() { 
    alert("Working"); 

}); 

필자는 함수가 바인딩되었을 때 DOM의 일부가 아니기 때문에 새로 만든 텍스트 영역에서 위의 코드가 작동하지 않는다는 것을 알고 있습니다. 나는 다른 질문에 여러 ansers을 시도했지만이 작업 얻을 수가 캔트 : 필자 시도

다른 것들 :

다음
// I also tried this 
// Neither textarea responds if this is used  
$('.trans').on('keyup', '.newTrans', function() { 
    alert("Working"); 
}); 


// I also tried this 
// Only the first textarea responds  
$('.trans').delegate('.newTrans', 'keyup', function(){ 
    alert("Working"); 
}); 

가 필요한 경우 코드 메신저의 더 많은 사용으로 JSfiddle입니다 :

jSfiddle

답변

4

.on() method 은 모든 바이올린에서 작동하지 않을. 당신이 jQuery를 최신 버전으로 업그레이드하면

(적어도 1.7) 당신은이 작업을 수행 할 수 있습니다

$(document).on('keyup', '.trans', function() { 
    alert("Working"); 
}); 

데모 : http://jsfiddle.net/VFt6X/4/

당신은 다음 몇 가지 이유로 v1.6.4를 계속해야하는 경우

$(document).delegate('.trans', 'keyup', function() { 
    alert("Working"); 
}); 

데모 : http://jsfiddle.net/VFt6X/5/

.delegate() method를 대신 사용

관심있는 요소의 '.trans' 선택기가 매개 변수로 함수에 전달되는 방식에 유의하십시오. 왼쪽의 $(...) 부분에 이미 존재하는 컨테이너를 지정해야합니다. 나는 document을 사용했지만 가능한 경우 문제의 요소에 더 가까운 것을 지정하는 것이 좋습니다. 따라서 귀하의 경우에는 $("#centerNotes")을 사용할 수 있습니다.

+0

DelightedD0D는 jsFiddle에서 jQuery 1.6.4를 사용합니다. – Heejin

+0

감사합니다. @Heejin, 예, 방금 업데이트 할 때 나타났습니다. – nnnnnn

+0

v1.6.4를 고수해야합니다. 둘 다 작동하면서'$ (문서) .delegate'와'$ ('trans') live '의 차이점은 무엇입니까? – DelightedD0D

2

이 시도 :

$('.trans').live('keyup', function() { 
    alert("Working"); 
}); 
당신이 .on()가 도입되기 전에에서 jQuery를 이전 버전을 지정했기 때문에

http://jsfiddle.net/VFt6X/3/

+0

+1,이 방법이 효과적이었습니다. 내가 잘못한 것을 더 잘 이해할 수 있었기 때문에 위에 수락되었습니다. – DelightedD0D