你能安排事件回调的泡沫顺序吗?

时间:2012-11-13 18:52:20

标签: javascript jquery backbone.js event-handling

我有几个对象正在侦听change事件,但我需要它们按指定的顺序启动。

是否可以在jQuery中自定义几个绑定对象的气泡顺序?

2 个答案:

答案 0 :(得分:1)

据我所见,有一系列处理程序存储所有处理程序,这些处理程序引用了指定的函数。因此,当您为事件添加新函数时,它会在该数组的末尾出现,这意味着类似下面的代码:

$("SomeElement")
.live(
    {
        click: function ()
        {
            // This is handler named A.
            alert("A");
        }
    }
);

$("SomeElement")
.live(
    {
        click: function ()
        {
            // This is handler named B.
            alert("B");
        }
    }
);

在<{1}}事件触发后> 将显示

但是当你改变地方时:

"click"

$("SomeElement") .live( { click: function () { // This is handler named B. alert("B"); } } ); $("SomeElement") .live( { click: function () { // This is handler named A. alert("A"); } } ); 事件触发时将在之前显示

您可以通过这种方式订购添加处理程序,因为javascript代码是从上下方向执行的,我相信这是唯一的方法。

希望它有所帮助。

干杯

答案 1 :(得分:1)

不幸的是,不能自定义事件气泡订单。

为了达到您想要的效果,我建议 jQuery自定义事件

示例:

$("#YOURELEMENT").trigger('CUSTOMEVENT'); //create a new custom event
$("#YOURELEMENT2").bind('CUSTOMEVENT',function(e){ ... }); //listen for new custom event

这里有一个good tutorial