我有一个javascript链接,我在弹出窗口中用作按钮:
<a href="#" class="submit-action close-modal">Submit</a>
“submit-action”类有一个jQuery .click()绑定,它在嵌入在模态中的表单上执行.submit()。 “close-modal”类有一个关闭模态的.click()绑定。
$(".submit-action").click(function() ($("#someForm").attr("action", "someURL");
$("#someForm").submit();
this.close = function () {
$("#modal").hide();
$.unblockUI();
};
$(".close-modal").click(function()(this.close);
目前,当我单击此按钮时,close-modal绑定似乎首先执行并在提交表单之前关闭模式。因此弹出窗口关闭而不执行提交。有没有办法可以在不合并两个.click()绑定的情况下强制执行“submit-action”绑定?
答案 0 :(得分:3)
它们按照绑定的顺序触发,因此在绑定提交操作后绑定关闭模式,它应该按照您想要的顺序进行。
小提琴1:http://jsfiddle.net/johnkoer/2xNwn/1/
小提琴2:http://jsfiddle.net/johnkoer/2xNwn/2/
来自JQuery documentation(强调我的):
默认情况下,大多数事件从原始事件目标冒出来 文档元素。在整个过程中的每个元素,jQuery调用任何元素 匹配已附加的事件处理程序。处理程序可以阻止 从文档树中进一步冒泡的事件(从而防止 通过调用来运行这些元素的处理程序 event.stopPropagation()。当前附加的任何其他处理程序 但是元素会运行。为防止这种情况,请致电 event.stopImmediatePropagation()。 (绑定到元素的事件处理程序 按照它们被绑定的顺序调用。)
答案 1 :(得分:1)
简单地让一个在另一个之上会导致它首先发生:
$(document).on('click', '.submit-action', function () {
alert('submit-action click');
});
$(document).on('click', '.close-modal', function () {
alert('close-modal click');
});
答案 2 :(得分:0)
如果要在提交完成后立即关闭模式。触发动作以关闭模式&#34;完成&#34; ajax的事件。