From 4e6fd0f85604b0dc71dfd59503a7b66a3fa2df42 Mon Sep 17 00:00:00 2001 From: dusan-maintains Date: Fri, 27 Feb 2026 10:56:31 +0500 Subject: [PATCH] fix: bind ajax callbacks to the originating modal instance --- jquery.modal.js | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/jquery.modal.js b/jquery.modal.js index 7e62a4d..7f74fac 100644 --- a/jquery.modal.js +++ b/jquery.modal.js @@ -30,7 +30,8 @@ }; $.modal = function(el, options) { - var remove, target; + var remove, target, self; + self = this; this.$body = $('body'); this.options = $.extend({}, $.modal.defaults, options); this.options.doFade = !isNaN(parseInt(this.options.fadeDuration, 10)); @@ -56,18 +57,20 @@ this.showSpinner(); el.trigger($.modal.AJAX_SEND); $.get(target).done(function(html) { - if (!$.modal.isActive()) return; + if (modals.indexOf(self) === -1) return; el.trigger($.modal.AJAX_SUCCESS); - var current = getCurrent(); - current.$elm.empty().append(html).on($.modal.CLOSE, remove); - current.hideSpinner(); - current.open(); + self.$elm.empty().append(html).on($.modal.CLOSE, remove); + self.hideSpinner(); + self.open(); el.trigger($.modal.AJAX_COMPLETE); }).fail(function() { el.trigger($.modal.AJAX_FAIL); - var current = getCurrent(); - current.hideSpinner(); - modals.pop(); // remove expected modal from the list + if (modals.indexOf(self) === -1) { + el.trigger($.modal.AJAX_COMPLETE); + return; + } + self.hideSpinner(); + modals.splice(modals.indexOf(self), 1); el.trigger($.modal.AJAX_COMPLETE); }); }