Hier ist das Szenario, mein Inhalt wird basierend auf einer Klasse asynchron geladen. Wenn ich also einen Link mit der Klasse ajaxLink habe, wird er wie folgt ausgelöst:
$('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');
}
});
});
});
Alles schön. Jetzt möchte ich dem Benutzer in einem Fall eine Warnung anzeigen, um confirm
dass sie die Seite laden und alle ihre Änderungen verlieren möchten, also habe ich dies geschrieben:
$('a.addANewHotel').click(function (e) {
if (!confirm('Adding a new hotel will loose any unsaved changes, continue?')) {
e.stopPropagation();
}
});
jetzt habe ich es versucht return false
, e.preventDefault()
und e.stopPropagation();
aber egal was die erste methode immer gefeuert wird? Wie kann ich verhindern, dass das zusätzliche Klickereignis ausgelöst wird? Ist das eine Sache mit der Reihenfolge der Ereignisse?
Verstehe nicht, inwiefern dies relevant ist, aber mein HTML ist:
<a style="" href="https://stackoverflow.com/CMS/CreateANewHotel?regionID=3&destinationID=1&countryName=Australia" class="button wideBorderlessButton ajaxLink addANewHotel">Add a new hotel</a>
Wie sieht dein HTML-Code aus?
– Asciiom
3. Okt ’12 um 12:44
Ich verstehe nicht, warum Sie dies tun, indem Sie 2 verschiedene Ereignisse an dasselbe Element binden. Ich würde die Bestätigungsnachricht nur anzeigen/nicht anzeigen, je nachdem, auf welches Element geklickt wurde, aber alle innerhalb desselben Klickereignisses (z. B. mithilfe einer hasClass if)
– Th0rndike
3. Okt. ’12 um 12:49
Natürlich ist es relevant, erst jetzt wissen wir, dass es nur eines gibt
a
Tag mit mehreren Klassen und Sie binden zwei Klick-Handler an dasselbe Tag.– Asciiom
3. Okt. ’12 um 12:49
@ThOrndike Ich nehme an, ich könnte das tun, aber es ist nicht sehr elegant. Der Ajax-Link-Code funktioniert, es scheint schade, ihn mit vielen anderen zu überladen
– Liam
3. Okt. ’12 um 12:52
Sind die zwei
$(..).click()
Anrufe in der gleichen Reihenfolge ausgeführt, die Sie in Ihrem Beitrag geschrieben haben?– FixMaker
3. Okt. ’12 um 12:56