1

我有几个对象在监听一个change事件,但我需要它们以指定的顺序触发。

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

4

2 回答 2

1

据我所经历的,有一个处理程序数组存储所有引用分配函数的处理程序。因此,当您为事件添加新函数时,它会位于该数组的末尾,这意味着类似于下面的代码:

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

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

当事件触发时, B 将显示A之后。"click"

但是当你改变地方时:

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

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

触发事件时, B 将显示A之前。"click"

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

希望能帮助到你。

干杯

于 2012-11-13T19:09:48.813 回答
1

不幸的是,您不能自定义事件冒泡顺序。

为了达到你想要的效果,我会推荐jQuery custom events

例子:

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

这是一个很好的教程

于 2012-11-13T19:12:28.120 回答