2016-01-27 3 views
0

Я хотел бы, чтобы остановить мое событие после sayHello1Как остановить событие в JS?

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» косяк помощь, чтобы остановить sayHello2, но нет никакого способа, чтобы сделать это! (представьте себе firefox & Co, используя имя «stopMe» в своем браузере!)

+3

'e.stopImmediatePropagation()' – zerkms

+0

заменить элемент с это собственный outerHTML ... затем добавить новый слушатель. Старый слушатель исчезнет – charlietfl

ответ

2

Вы хотите использовать e.stopImmediatePropagation(), который не позволяет другим слушателям того же события вызываться.

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>

+0

Спасибо! это оно :) – alexino2

Смежные вопросы