jQuery의 .bind() 대 .on()
나는 새로운 기능에 대한 두 개의 훌륭한 기사를 발견했다..on()
: jquery4u.com, elijahmanor.com.
다른 방법이 있을까요?.bind()
그래도 사용하는 것이 좋다.on()
?
예를 들어, 다음과 같은 샘플코드가 있습니다.
$("#container").click( function( e ) {} )
셀렉터에 의해 취득된 아이템은 1개뿐이며, 제 경우는<div>
이름 지어진#container
페이지가 로드되었을 때 이미 존재하며 동적으로 추가되지 않았습니다.jQuery의 최신 버전인 1.7.2를 사용하고 있습니다.
그 샘플의 경우,.on()
대신 사용되다.bind()
에서 제공하는 다른 기능을 사용하지 않더라도.on()
기능하고 있습니까?
내부적으로는.bind
직접 맵.on
현재 버전의 jQuery에 포함되어 있습니다.(동일한 경우도 마찬가지입니다).live
따라서 퍼포먼스 히트는 미미하지만 실제로는 미미한 수준입니다..bind
대신.
하지만,.bind
향후 버전에서는 언제든지 삭제할 수 있습니다.계속 사용할 이유가 없습니다..bind
그리고 더 좋은 이유는.on
대신.
이들 스니펫은 모두 동일한 기능을 수행합니다.
element.on('click', function () { ... });
element.bind('click', function () { ... });
element.click(function () { ... });
그러나 모두 동일한 기능을 수행하는 다음과 같은 것과는 매우 다릅니다.
element.on('click', 'selector', function () { ... });
element.delegate('click', 'selector', function () { ... });
$('selector').live('click', function () { ... });
두 번째 이벤트 핸들러 세트는 이벤트 위임을 사용하며 동적으로 추가된 요소에 대해 작동합니다.위임을 사용하는 이벤트핸들러의 퍼포먼스도 크게 향상됩니다.첫 번째 세트는 동적으로 추가된 요소에서는 작동하지 않으며 성능이 훨씬 떨어집니다.
jQuery'son()
함수는 아직 존재하지 않는 새로운 기능을 도입하지 않고 jQuery에서 이벤트 처리를 표준화하려는 시도일 뿐입니다(라이브, 바인드 또는 위임 중 하나를 결정할 필요가 없습니다).
직접 방법 및.delegate
보다 뛰어난 API입니다..on
그들을 비난할 의도는 전혀 없습니다.
코드가 문자열 형식으로 입력되지 않기 때문에 직접 메서드를 사용하는 것이 좋습니다.사일런트 버그가 아닌 이벤트 이름을 잘못 입력하면 즉시 오류가 발생합니다.내 생각에는 쓰고 읽는 것도 더 쉽다.click
보다on("click"
그.delegate
보다 우수하다.on
인수의 순서 때문에:
$(elem).delegate( ".selector", {
click: function() {
},
mousemove: function() {
},
mouseup: function() {
},
mousedown: function() {
}
});
위임된 건 바로 알잖아요. 왜냐하면, 음, 대표라고 써있거든요.셀렉터도 바로 표시됩니다.
와 함께.on
그것이 위임되어 있는지조차 명확하지 않기 때문에 셀렉터의 끝을 볼 필요가 있습니다.
$(elem).on({
click: function() {
},
mousemove: function() {
},
mouseup: function() {
},
mousedown: function() {
}
}, "selector" );
그럼 , 름, 름, 름, 름의 ..bind
끔찍하고 .on
.delegate
는 비임시 이벤트를 수행할 수 없고 직접 메서드가 없는 이벤트가 있기 때문에 이러한 드문 경우에는 위임된 이벤트와 비임시 이벤트를 완전히 구분하는 경우에만 사용할 수 있습니다.
에서 " " " 를 $.fn.bind
쓰기' 것을 알 수 거예요.on
:
function (types, data, fn) {
return this.on(types, null, data, fn);
}
http://james.padolsey.com/jquery/ #v=1.7.2&fn=$.fn.html
jQuery 문서:
jQuery 1.7에서는 .on() 메서드가 문서에 이벤트 핸들러를 첨부하는 데 선호됩니다.이전 버전에서는 .bind() 메서드를 사용하여 이벤트핸들러를 요소에 직접 부가합니다.핸들러는 jQuery 객체의 현재 선택된 요소에 연결되어 있으므로 .bind()에 대한 호출이 발생한 시점에 이러한 요소가 존재해야 합니다.보다 유연한 이벤트바인딩에 대해서는 .on() 또는 .delegate()의 이벤트 위임에 대한 설명을 참조하십시오.
Jquery 3.0 이후로는 .bind가 권장되지 않으며 대신 .on을 사용하는 것을 선호합니다.앞서 @Blazemonger가 삭제해도 좋다고 대답한 것처럼 삭제가 확실합니다.이전 버전의 경우 .bind는 내부에서도 .on을 호출하며 둘 사이에는 차이가 없습니다.자세한 내용은 api도 참조해 주세요.
언급URL : https://stackoverflow.com/questions/11847021/jquery-s-bind-vs-on
'source' 카테고리의 다른 글
네이티브 코드를 호출하기 위해 유고 인민군 대신 JNI를 사용하시겠습니까? (0) | 2022.12.18 |
---|---|
LOCK TABLES가 테이블이 잠기지 않았다고 말한 후 UNION 쿼리에서 선택 (0) | 2022.12.18 |
cURL에서 $_POST 값 전달 (0) | 2022.12.08 |
MySql workbench 쿼리 이력(마지막으로 실행된 쿼리/쿼리). 즉, 테이블 생성/변경, 선택, 업데이트 쿼리 삽입 (0) | 2022.12.08 |
Java에서 toString 메서드를 사용하는 방법 (0) | 2022.12.08 |