alexino2
alexino2

Reputation: 101

How to stop an event in JS?

I would like to stop my event after sayHello1

var sayHello1 = function(e) {
    console.log("hello1");
    e.stopMe = true;
    e.preventDefault(); // doesn't work
    e.stopPropagation(); // doesn't work
    return false; // doesn't work
};
var sayHello2 = function(e) {
    console.log("hello2"); // Still fired !
    if (e.stopMe ) console.log("stop hello2"); // works
};

document.addEventListener("click", sayHello1);
document.addEventListener("click", sayHello2);

"e.stopMe" cant help to stop sayHello2, but there is no way to do that ! (imagine firefox & Co using the name "stopMe" on their browser !)

Upvotes: 0

Views: 149

Answers (1)

epascarello
epascarello

Reputation: 207501

You want to use e.stopImmediatePropagation() which prevents other listeners of the same event from being called.

var sayHello1 = function(e) {
    console.log("hello1");
    e.stopImmediatePropagation(); //keeps any event listener that is bound after this from firing
    e.preventDefault(); // prevents the default action from happening
    e.stopPropagation(); // prevents ancestors from getting the event
    return false; // works like preventDefaut
};
var sayHello2 = function(e) {
    console.log("hello2"); // Still fired !
};

document.addEventListener("click", sayHello1);
document.addEventListener("click", sayHello2);
<h1>Test</h1>

Upvotes: 2

Related Questions