jQuery.aus (), ist das entfernen nicht verbindlich
Aus irgendeinem Grund jQuery.off('click') scheint nicht zu sein, hier zu arbeiten. Wenn die " ja " - button geklickt wird, in das Modell ein weiteres Modell erscheint. Was mache ich falsch?
code:
$(function(){
//If there are warnings on the page bind alert
if ($('.renewal-warning').length > 0){
(function (){
$('#signRentalContainer').on('click', '.renewal-warning', function(e){
var buttonHandle = this;
//Prevent submission
e.preventDefault();
//Show warning model
$.modal({
content: $('#renewalWarning').html(),
title: "Order Renewal Warning",
buttons: {
'Yes': function(win) { $(buttonHandle).off('click').click(); },
'No': function(win) { win.closeModal(); }
},
maxWidth: 250,
closeButton: false
});
});
})();
}
});
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ziemlich sicher, dass Sie gehen zu müssen, um zu liefern, es das gleiche element, sowie die gleiche Auswahl.
In der
.on()
handlerthis
ist die'.renewal-warning'
element, auf das geklickt wurde, nicht die#signRentalContainer
element.Wenn es mehrere gibt, die diese
'.renewal-warning'
Elemente, und Sie nur deaktivieren möchten, ein zu einer Zeit, ist der einfachste Weg, um zu ändern, seine Klasse, so dass es nicht mehr passt der Selektor..off()
? Ich vermute, dass die Ereignis-bubbling. Stattoff()
sind, versuchen Siee.stopPropagation()
an den handler..click()
dass Sie tun, auf das element, das war schon angeklickt. Warum ist das da? Versuchen Sie, es zu entfernen.click()
Sie tun solltenwindow.location.href = this.href
.this.href
war erfolgreich verfolgt? Ich nehme an, Sie können in der Lage sein, um Feuer eine Anfrage ab, bevor Sie Folgen Sie denhref
, aber so bekommst du nie die Antwort. Ich würde auch raten (obwohl ich nicht sicher bin), dass die Anfrage storniert werden, sobald Sie die Seite verlassen. Aber dann, wenn es ein AJAX-request, vielleicht sollten Sie warten, bis die Antwort vor der Weiterleitung zuhref
?Weil die
this
beziehen sich auf den Kontext der handle-Funktion, nicht die Funktion selbst.Versuchen Sie, es eine benannte Funktion, dann finden Sie es, wenn Sie anrufen
off
:$("body").off("click", '#signRentalContainer', buttonHandle);
BTW irgendeinem Grund können wir nicht verwenden
unbind
direkt hier?$("#signRentalContainer").unbind("click");