Aquí está el escenario, mi contenido se carga de forma asincrónica en función de una clase. Entonces, si tengo un enlace con la clase ajaxLink, se activa de la siguiente manera:Prevenir eventos de clics múltiples activando JQuery
$('a.ajaxLink').click(function (e) {
e.preventDefault();
var container = $(this).parents('div.fullBottomContent');
var href = $(this).attr('href');
container.fadeOut('fast', function() {
$.ajax({
url: href,
dataType: "html",
type: "GET",
success: function (data) {
container.html(data);
BindEventHandlers();
container.fadeIn();
$.validator.unobtrusive.parse('form');
},
error: function() {
alert('An error has occurred');
}
});
});
});
Todo encantador. Ahora bien, en un caso, quiero mostrar una advertencia al usuario a confirm
que quieren cargar la página y suelta todos sus cambios, así que he escrito esto:
$('a.addANewHotel').click(function (e) {
if (!confirm('Adding a new hotel will loose any unsaved changes, continue?')) {
e.stopPropagation();
}
});
Ahora he intentado return false
, y e.preventDefault()
e.stopPropagation();
pero no importa cuál sea el primer método que se active siempre? ¿Cómo puedo evitar que se active el evento de clic adicional? ¿Es esto una orden de eventos?
no veo cómo esto es relevante, pero mi HTML es:
<a style="" href="/CMS/CreateANewHotel?regionID=3&destinationID=1&countryName=Australia" class="button wideBorderlessButton ajaxLink addANewHotel">Add a new hotel</a>
¿Cómo es tu html como? – Asciiom
No creo que el HTML tenga nada en él, pero agregó de todos modos – Liam
No entiendo por qué lo haces al vincular 2 eventos diferentes a un mismo elemento. Solo mostraría/no mostraría el mensaje de confirmación dependiendo de qué elemento se hizo clic, pero todo dentro del mismo evento de clic (por ejemplo, usando un hasClass) – Th0rndike