Как я могу узнать, было ли вызвано событие stopImmediatePropagation ()? - PullRequest
0 голосов
/ 25 июня 2018

Я повторно использую собственный класс Event для своей собственной объектной модели.

Я нашел и использовал свойство Event.stopBubbling, которое становится равным true после вызова Event.stopPropagation(). Но я не могу найти какие-либо специальные свойства, которые изменяются на Event.stopImmediatePropagation().

Как мне узнать, было ли вызвано событие stopImmediatePropagation()?

Есть ли какие-либо свойства, которые он изменяет, или, возможно, какой-то хук, который я могу слушать?

1 Ответ

0 голосов
/ 25 июня 2018

С jQuery:

Если вы используете stopImmediatePropagation jQuery, то я увидел следующий код jQuery в его репозитории GitHub.

https://github.com/jquery/jquery/blob/899c56f6ada26821e8af12d9f35fa039100e838e/src/event.js#L594

здесь приведено определение stopImmediatePropagation:

stopImmediatePropagation: function() {
    var e = this.originalEvent;

    this.isImmediatePropagationStopped = returnTrue;

    if ( e && !this.isSimulated ) {
        e.stopImmediatePropagation();
    }

    this.stopPropagation();
}

, поэтому, похоже, Event.isImmediatePropagationStopped - это способ узнать, что вам нужно.

Без jQuery:

Если вы пытаетесь достичь того же самого без jQuery, то я думаю, что нет никакого собственного способа узнать, действительно ли вызывается stopImmediatePropagation.но следующий код можно использовать, чтобы переопределить исходный stopImmediatePropagation и заставить его работать, как указано выше.

stopImmediatePropagationOriginal = Event.prototype.stopImmediatePropagation;
Event.prototype.stopImmediatePropagation = function(event){
    stopImmediatePropagationOriginal.bind(this).call(event);
    this.isImmediatePropagationStopped=true;
};

, поэтому с помощью приведенного выше кода вы можете использовать Event.isImmediatePropagationStopped, чтобы узнать, что вам нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...