jquery의 약속 방법은 실제로 어떻게 작동합니까?
말인지 잘 요.delegate
★★★★★★★★★★★★★★★★★」promise
아레.
문서에 따르면...
delegate
셀렉터 및 이벤트를 포장용기에 바인드하여 나중에 현재 및 미래 아이템에 다시 사용할 수 있도록 합니다.promise()
새로 로드된 모든 것이 일치할 경우 처음 바인딩된 시점으로 다시 매핑됩니다.아마도 나는 이 약속 방식을 잘 이해하지 못할 것이다.
그대로 Ajax
이벤트가 처음 바인딩되었을 때처럼 트리거되거나 작동하지 않는 이유는 무엇입니까?
네, 문서 페이지에도 가봤지만 설명을 완전히 이해하지 못했습니다.
나는 이 질문에 조금 혼란스럽다.제 생각에 이것은 당신이 혼란스러워서 그런 것 같아요.promise
★★★★★★★★★★★★★★★★★」delegate
jQuery는 jQuery를 사용합니다.이치노
delegate
delegate
는 jQuery 1.4.2에서 도입된jQuery의 기능입니다(jQuery 1.3에서 추가된 기능에 대한 접근법입니다).이것에 의해, 특히 AJAX 콜의 DOM 의 변경에 수반하는 특정의 문제가 해결됩니다.
이벤트 핸들러를 바인드할 때는 선택 항목에 바인드합니다. 이렇게 될 것 같아요.$('.special').click(fn)
special
중 트리거됩니다. 이러한 요소에 바인드하기 때문에 이러한 요소 중 하나에서 클래스를 삭제해도 이벤트가 트리거됩니다.반대로 클래스를 요소에 추가하거나 새 요소를 DOM에 추가하면 이벤트가 바인딩되지 않습니다.
Javascript에는 이를 완화시키는 "이벤트 버블링" 기능이 있습니다.이벤트가 트리거되면 브라우저는 먼저 이벤트가 발생한 요소에 알립니다.그런 다음 DOM 트리에 올라가 각 상위 요소에 알립니다.즉, DOM 트리 상단의 요소에서 이벤트 핸들러를 바인딩하고 하위 요소에서 트리거된 이벤트(핸들러가 바인딩되었을 때 존재하지 않는 이벤트도 바인딩할 수 있습니다.
delegate
jQuery 。먼저 부모 요소를 선택합니다.하다발신측 요소가 이 셀렉터와 일치하는 경우에만 핸들러가 실행됩니다. 다음 이벤트합니다. 예를 들어, 를 들어 유형을 지정할 수 .click
,submit
,keydown
와 마찬가지로.마지막으로 이벤트 핸들러를 지정합니다.
$('#containingElement').delegate('a.special', 'click', function() {
alert('This will happen on all links with the special class');
});
promise
promise
는 jQuery 기능 세트에 비교적 최근에 추가된 또 다른 기능입니다.jQuery 1.5에서 소개된 개념의 일부입니다('deferred'와 'delegate'의 소리 유사성이 혼란의 원인이라고 생각합니다).이것은 비동기 코드의 복잡성을 추상화하는 방법입니다.가장 좋은 예는 AJAX 콜입니다.오브젝트는 에 의해 반환됩니다.$.ajax
는 입니다.Deferred
물건.예:
$.ajax({
url: 'somepage.cgi',
data: {foo: 'bar'}
}).done(function() {
// this will be run when the AJAX request succeeds
}).fail(function() {
// this will be run when the AJAX request fails
}).always(function() {
// this will be run when the AJAX request is complete, whether it fails or succeeds
}).done(function() {
// this will also be run when the AJAX request succeeds
});
즉, 여러 가지 점에서 의 바인딩 성공 핸들러와 동일합니다.$.ajax
복수의 핸들러를 바인드 할 수 있는 것, 및 초기 콜 후에 바인드 할 수 있는 것을 제외합니다.
비동기식으로 처리하는 것이 유용한 또 다른 시기는 애니메이션입니다.함수에 대한 콜백을 제공할 수 있지만 위의 AJAX 예시와 유사한 구문을 사용하는 것이 좋습니다.
jQuery 1.6에서는 이 기능이 실현되었으며 이 구현의 일부입니다.당신이 전화하세요promise
jQuery를 선택하면 오브젝트의 모든 애니메이션이 완료되면 이벤트 핸들러를 바인딩할 수 있는 오브젝트가 나타납니다.
예:
$('div.special').fadeIn(5000).promise().then(function() {
// run when the animation succeeds
}).then(function() {
// also run when the animation succeeds
});
다시 말씀드리지만, 이 방법은 기존 방식과 비슷하지만 유연성을 더합니다.핸들러는 나중에 바인드할 수 있으며 여러 개를 바인드할 수 있습니다.
요약
기본적으로는, 그 사이에 유의한 관계는 없습니다.delegate
★★★★★★★★★★★★★★★★★」promise
jQuery로 하다
언급URL : https://stackoverflow.com/questions/6080050/how-does-jquerys-promise-method-really-work
'source' 카테고리의 다른 글
Mongodb:사용하기 전에 알아야 할 사항 (0) | 2023.03.26 |
---|---|
컨트롤러에서 PreAuthorize가 작동하지 않음 (0) | 2023.03.26 |
스프링 파일 업로드 - MultipartHttpServletRequest 가져오기: MultipartResolver가 구성되어 있습니까?에러 (0) | 2023.03.26 |
요소 외부를 클릭할 때 이벤트를 발생시키는 지시어 (0) | 2023.03.26 |
폼 7과 커스텀 투고 타입에 문의합니다. (0) | 2023.03.26 |