2016-08-05 4 views
0

그래서이 문제에 대해 몇 가지 질문을했지만 내 상황에는 아무런 관련이 없습니다.JQuery 중지/시작 전파

예를 들어, 페이지의 컨트롤에 핸들러를 첨부하는 여러 개의 자바 스크립트 파일이있는 웹 페이지가 있습니다. 컨트롤 중 일부는 다른 JS 파일의 여러 핸들러를 가질 수 있습니다. 드롭 다운 목록에는 두 가지 변경 이벤트가 있습니다. 문제는 첫 번째 변경 이벤트의 AJAX 요청이 완료되기 전에 두 번째 변경 기능이 실행된다는 것입니다.

내가해야 할 일은 첫 번째 변경 이벤트에서 Ajax 요청을 실행하고 그 것이 성공하면 두 번째 이벤트를 실행하는 것입니다. 과거에는 ajax 요청에서

async: false 

을 사용할 수 있었지만 더 이상 사용되지 않을 수 있습니다.

내 희망은, 첫 번째 변경 이벤트에

event.stopImmediatePropagation() 

를 호출하고 아약스 요청이 실행 된 후 다음 최대가 다시 시작하는 것이 었습니다. 내가 알 수있는 한, 이것은 선택 사항이 아닙니다.

나는 AJAX가 실행되기 전에 AJAX가 실행되기 전에 AJAX가 실행 된 후 변경 이벤트를 트리거하려고 시도하면서 전파가 멈추지 않도록 시도했지만 무한 루프가 발생합니다.

그래서 :

이 전파를 일시 정지 할 수있는 방법이 있습니까?

컨트롤에 대한 이벤트 처리기를 저장 한 다음 나중에 트리거 할 수있는 방법이 있습니까?

감사합니다.

답변

0

event.stopPropagation() 이벤트가 DOM 트리를 버블 링하지 못하도록하여 부모 처리기가 이벤트를 통지하지 못하도록합니다.

이 방법은 인수를 허용하지 않습니다.

event.isPropagationStopped()를 사용하여이 메서드가 (이벤트 객체에서) 호출되었는지 여부를 확인할 수 있습니다.

이 방법은 trigger()으로 트리거 된 사용자 지정 이벤트에서도 작동합니다.

동일한 요소의 다른 핸들러가 실행되는 것을 방지하지는 않습니다.

예 : 클릭 이벤트에서 버블 링을 종료합니다.

$("p").click(function(event) { 
    event.stopPropagation(); 
    // Do something 
});