[javascript] jQuery 1.9 .live ()는 함수가 아니다

최근 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를 제공합니다.