최근 jQuery를 1.8에서 2.1로 업데이트했습니다. 나는 갑자기 .live()
작동 이 멈추는 것을 발견했다 .
오류가 발생 TypeError: $(...).live is not a function
합니다.
대신 사용할 수있는 방법이 .live()
있습니까?
답변
jQuery .live()
는 버전 1.9부터 제거되었습니다.
즉, 1.8 이전 버전에서 업그레이드하는 경우 아래 마이그레이션 가이드를 따르지 않으면 문제가 발생합니다. 당신은 단순히 대체 안 .live()
와 .on()
!
검색을 시작하기 전에 읽고 교체하십시오.
들어 빠른 / 핫픽스 라이브 사이트에 없는 단지 키워드 교체 live
로를 on
,
로 매개 변수가 다르다 !
.live(events, function)
에 매핑해야합니다 :
.on(eventType, selector, function)
(자식) 선택기는 매우 중요합니다! 어떤 이유로 든 이것을 사용할 필요가 없으면로 설정하십시오 null
.
마이그레이션 예 1 :
전에:
$('#mainmenu a').live('click', function)
그런 다음 자식 요소 ( a
)를 .on()
선택기 로 이동합니다 .
$('#mainmenu').on('click', 'a', function)
마이그레이션 예 2 :
전에:
$('.myButton').live('click', function)
그런 다음 요소 ( .myButton
)를 .on()
선택기 로 이동하고 가장 가까운 상위 요소 (바람직하게는 ID가있는)를 찾습니다.
$('#parentElement').on('click', '.myButton', function)
부모로서 무엇을 넣을지 모르는 경우 body
항상 작동합니다.
$('body').on('click', '.myButton', function)
또한보십시오:
답변
다음 JavaScript 코드를 포함시켜 코드 리팩토링을 피할 수 있습니다
jQuery.fn.extend({
live: function (event, callback) {
if (this.selector) {
jQuery(document).on(event, this.selector, callback);
}
return this;
}
});
답변
jQuery API 문서는 live()
버전 1.7에서 사용되지 않으며 버전 1.9에서 제거 된 것으로 표시됩니다. link) .
더 이상 사용되지 않는 버전 : 1.7, 제거 된 버전 : 1.9
또한 다음과 같이 말합니다.
jQuery 1.7부터 .live () 메소드는 더 이상 사용되지 않습니다. 사용 ) (CSTE 연구진은 이벤트 핸들러를 첨부 할 수 있습니다. 이전 버전의 jQuery 사용자는 .live ()보다 .delegate () 를 사용해야 합니다.
답변
.live()
jQuery 에 대한 포워드 포트 > = 1.9 JS 의존성을 리팩토링하지 않도록 .live()
최적화 된 DOM 선택기 컨텍스트 사용
/**
* Forward port jQuery.live()
* Wrapper for newer jQuery.on()
* Uses optimized selector context
* Only add if live() not already existing.
*/
if (typeof jQuery.fn.live == 'undefined' || !(jQuery.isFunction(jQuery.fn.live))) {
jQuery.fn.extend({
live: function (event, callback) {
if (this.selector) {
jQuery(document).on(event, this.selector, callback);
}
}
});
}
답변
.live ()는 더 이상 사용되지 않으며 이제 jQuery 1.9에서 제거되었습니다. .on ()
답변
.live는 1.9에서 제거되었습니다. 업그레이드 가이드를 참조하십시오 : http://jquery.com/upgrade-guide/1.9/#live-removed
답변
코드를 변경할 필요가없는 매우 간단한 수정, jquery 마이그레이션 스크립트 추가, 여기 다운로드
https://github.com/jquery/jquery-migrate/
더 이상 사용되지 않지만 “live”, “browser”등과 같은 기능이 필요한 jquery를 제공합니다.