多个.click()绑定。如何强制一个绑定最后执行?

时间:2012-08-14 14:42:06

标签: jquery

我有一个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”绑定?

3 个答案:

答案 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)

简单地让一个在另一个之上会导致它首先发生:

jsFiddle DEMO

$(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的事件。