Si adjunta dos o más controladores de eventos a un elemento HTML, se ejecutarán uno después del otro. Sin embargo, si desea detener los controladores de eventos posteriores, en función de una condición marcada en el primer controlador, ¿qué debe hacer?Cómo prevenir otros controladores de eventos, desde el primer controlador, en jQuery
Por ejemplo:
<div id='target'>
</div>
<p id='result'>
</p>
Me gustaría cancelar el segundo controlador, si el primer controlador se cancela.
$(function() {
var target = $('#target'),
result = $('#result');
target.click(function(e) {
result.append('first handler<br />');
// Here I want to cancel all subsequent event handlers
});
target.click(function(e) {
result.append('second handler<br />');
});
});
Puedes ver el violín here.
PD: Sé que e.preventDefault()
impide la acción predeterminada del elemento HTML (por ejemplo, evitar que se envíe una solicitud HTTP GET debido al clic en un enlace) y e.preventPropagation()
hace que el evento se propague a sus elementos principales en el árbol DOM. También sé que es posible usar una variable del medio, establecerla en verdadero en el administrador de primera mano y verificarla en los controladores posteriores. Pero quiero ver si hay una solución más clara y sofisticada para este problema o no.
He actualizado el [violín] (http://jsfiddle.net/saeedneamati/pFp7P/2/) para reflejar su respuesta. +1 y gracias. –