2012-07-30 3 views
0

EmployeeId는 일련의 옵션이있는 select 요소의 ID입니다. 이 방법은 작동하지 않습니다이 두 jQuery 참조의 차이점은 무엇이며 왜 .live와 함께 작동하지 않습니까?

var tar = document.getElementById("EmployeeId"); 
$(tar).live("click", function(){ 
console.log("Changed"); 
}); 

그러나,이 방법을 수행합니다

$("#EmployeeId").live("click", function(){ 
console.log("Changed"); 
}); 

$("#EmployeeId")$(tar)의 차이점은 무엇입니까? 나는 두 사람 사이에 아무런 차이가 없다는 인상하에 있었다. 또한 시도 할 때

console.log($(tar)); 
console.log($("#EmployeeId")); 

동일한 정확한 것을 콘솔로 보냅니다.

무엇이 다른가요? 하나의 접근 방식이 이벤트 처리기를 연결하지 않는 이유는 무엇입니까?

+0

.on을 사용할 수 없습니까? 라이브러리를 업그레이드 하시겠습니까? – Samson

+0

@radashk -'.live'가있는 버그입니까? –

+0

나는 잘 모른다. 그러나 그것은 depercated했다. 같은 방식으로 행동 하는가? – Samson

답변

2

.live은 이벤트 처리기를 document에 바인딩하고 이벤트의 원점 (또는 경로의 모든 요소)이 선택기와 일치하는지 여부를 테스트하므로 선택기가 작동해야합니다.

선택기가 제공되지 않으면 작동하지 않습니다. 그렇기 때문에 $('foo').children().live(..)과 같은 연결 방법이 작동하지 않습니다.

jQuery 1.7부터 .live은 설명서에 나열된 다양한 이유로 더 이상 사용되지 않습니다. http://api.jquery.com/live/.

대안은 .on (1.7) 및 .delegate (1.4.2)입니다.