2010-12-10 2 views
0

jQuery를 통해 포커스 및 흐림 이벤트가있는 입력 요소를 만듭니다. 입력 요소가 표시 되더라도 어떤 이유로 이벤트가 실행되지 않습니다. 여기에 예제가있다 http://jsfiddle.net/9JtLq/8/jQuery를 통해 html 요소를 동적으로 추가 할 때 이벤트가 발생하지 않습니다 (IE가 아닌 브라우저에서).

이것은 IE7 & IE8에서 작동한다. Firefox, Safari 또는 Chrome에서는 작동하지 않습니다. 왜?

HTML

<div> 
    Try to focus from one input to another. 
</div> 

<div class="placeholder"/> 

<div class="placeholder"/> 

<div id="output" /> 

자바 스크립트 : 당신은 당신이 추가 한 후 이벤트를 바인드해야

var input_box = $("<input type=\"text\" />") 
.focus(function() 
{ 
     $("#output").html($("#output").text() + "focus - "); 
}) 
.blur(function() 
{ 
     $("#output").html($("#output").text() + "blur - "); 
}); 


$(".placeholder").append(input_box); 
+3

에 바인딩됩니다 일치하는 모든 현재 및 미래의 요소를 의미 바인드 흐림을 살고 집중할 수 1.4.1+ 당신은 jQuery를 사용하는 경우 jsFiddle을 사용하여 질문에 * adjunct *를 사용하는 것을 의미하지만 항상 질문에 * 코드도 넣으십시오. SO는 혼자 서 있어야합니다 (외부 리소스가 사라질 수 있음). 그리고 도움을 구하는 사람들은 (선택할 수는 있지만) 링크를 따를 필요가 없습니다. –

+0

좋은 지적. 끝난. –

답변

1

$(".placeholder").append("<input type=\"text\" />"); 

$(".placeholder input:text").focus(function() { 
    $("#output").html($("#output").text() + "focus - "); 
}).blur(function() { 
    $("#output").html($("#output").text() + "blur - "); 
}); 

http://jsfiddle.net/9JtLq/9/


모든함으로써 이벤트 (들)

$(".placeholder input:text").live("focus", function() { 
    $("#output").html($("#output").text() + "focus - "); 
}).live("blur", function() { 
    $("#output").html($("#output").text() + "blur - "); 
}); 

http://jsfiddle.net/9JtLq/10/

+0

또한'.live'를 지원하지 않는 jQuery 버전을 사용하는 경우 liveQuery 플러그인이 있습니다. http://plugins.jquery.com/project/livequery – jgradim

+0

왜 내가 추가 한 후에 이벤트를 바인딩해야합니까? 그것? 또한 원래의 코드는 IE7과 IE8에서 작동하지만 다른 브라우저에서는 작동하지 않습니다. –

+0

jQuery는'live()'이벤트를 사용하지 않는 한 아직 존재하지 않는 이벤트에 바인딩 할 수 없다고 가정합니다. IE7과 IE8은 다르게 상호 작용할 수 있습니다. 'live()'를 사용한다면 당신은 잘되어야합니다. – hunter

관련 문제