events 막기 jQuery에서 event.stopPropagation을 실행 취소하는 방법은 무엇입니까?



jquery 이벤트 중지 (3)

내 응용 프로그램에서 event.stopPropagation() 사용하고 있습니다. 그러나 앞서 언급 한 함수가 호출되지 않은 것처럼 전파가 계속되기를 원하는 시나리오가 하나 등장했습니다. 그래서 궁금합니다. 중지 된 후 전파를 "다시 시작"할 수있는 방법이 있습니까? event.stopPropagation 에 대한 하나의 호출을 12 개의 개별 조건문으로 이동하는 것은 대단히 지루할 것입니다.

https://ffff65535.com


다음과 같이 원본 이벤트를 리팩터링하십시오.

var refEvent = event.originalEvent;
refEvent.cancelBubble = false;
refEvent.defaultPrevented = false;
refEvent.returnValue = true;
refEvent.timeStamp = (new Date()).getTime();

if (event.target.dispatchEvent){
    event.target.dispatchEvent(refEvent);
} else if (event.target.fireEvent) {
    event.target.fireEvent(refEvent);
}

다음은 작동하는 해결책입니다.

$('#mydiv').on('click.new', function(e){

    e.stopImmediatePropagation();

alert('this will happen only once');

$('#mydiv').unbind('click.new');

});

이벤트가 사용자 정의 네임 스페이스를 가질 수 있다는 사실을 이용하고 그에 따라 바인딩을 해제 할 수 있습니다. 또한 e.stopPropagation 에서도 작동합니다. 이 경우 해당 맞춤 클릭 이벤트와 관련된 모든 항목을 실행 취소 할 수 있습니다.


event.stopPropagation() 호출을 조건에 넣습니다. 예를 들어

$el.click(function(event) {
    if (some_condition) {
        event.stopPropagation()
        // do stuff
    }
    else {
        // do other stuff, without stopping propagation
    }
});

지루할 수도 있지만, 불행히도 stopPropagation은 단방향 스위치입니다. 중지 된 후에는 동일한 이벤트에 대해 다시 켤 수 없습니다.





jquery