Ecco lo scenario, il mio contenuto viene caricato in modo asincrono in base a una classe. Quindi, se ho un legame con la classe ajaxLink spara come di seguito:Impedire l'attivazione di più eventi click 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');
}
});
});
});
tutto molto bello. Ora, in un caso voglio visualizzare un messaggio di avviso per l'utente di confirm
che vogliono caricare la pagina e sciolto tutte le loro modifiche in modo ho scritto questo:
$('a.addANewHotel').click(function (e) {
if (!confirm('Adding a new hotel will loose any unsaved changes, continue?')) {
e.stopPropagation();
}
});
ora ho provato return false
, e.preventDefault()
e e.stopPropagation();
ma non importa quale sia il primo metodo che viene sempre attivato? Come posso impedire l'attivazione dell'evento di clic in più? È una cosa dell'ordine degli eventi?
Non vedo come questo sia rilevante, ma il mio HTML è:
<a style="" href="/CMS/CreateANewHotel?regionID=3&destinationID=1&countryName=Australia" class="button wideBorderlessButton ajaxLink addANewHotel">Add a new hotel</a>
cosa fa il tuo html assomiglia? – Asciiom
Non penso che l'HTML non abbia accennato ma aggiunto comunque – Liam
Non capisco perché lo stai legando 2 eventi diversi a uno stesso elemento. Vorrei solo mostrare/non mostrare il messaggio di conferma a seconda dell'elemento su cui è stato fatto clic, ma tutto all'interno dello stesso evento click (ad esempio usando una hasClass se) – Th0rndike