change
イベントをリッスンするオブジェクトがいくつかありますが、それらを指定された順序で起動する必要があります。
jQueryで複数のバインドされたオブジェクトのバブル順序をカスタマイズすることは可能ですか?
change
イベントをリッスンするオブジェクトがいくつかありますが、それらを指定された順序で起動する必要があります。
jQueryで複数のバインドされたオブジェクトのバブル順序をカスタマイズすることは可能ですか?
私が経験した限りでは、割り当てられた関数を参照するすべてのハンドラーを格納するハンドラーの配列があります。したがって、イベントに新しい関数を追加すると、その配列の最後に配置されます。これは、次のコードのようなものを意味します。
$("SomeElement")
.live(
{
click: function ()
{
// This is handler named A.
alert("A");
}
}
);
$("SomeElement")
.live(
{
click: function ()
{
// This is handler named B.
alert("B");
}
}
);
イベントがトリガーされると、 Aの後にBが表示されます。"click"
しかし、あなたが場所を変えるとき:
$("SomeElement")
.live(
{
click: function ()
{
// This is handler named B.
alert("B");
}
}
);
$("SomeElement")
.live(
{
click: function ()
{
// This is handler named A.
alert("A");
}
}
);
イベントがトリガーされると、 Aの前にBが表示されます。"click"
javascriptコードは上下方向から実行されるため、この方法でハンドラーの追加を注文できます。これが唯一の方法だと思います。
それが役に立てば幸い。
乾杯
残念ながら、イベント バブルの順序をカスタマイズすることはできません。
あなたが望む効果を達成するために、私はjQuery custom eventsをお勧めします。
例:
$("#YOURELEMENT").trigger('CUSTOMEVENT'); //create a new custom event
$("#YOURELEMENT2").bind('CUSTOMEVENT',function(e){ ... }); //listen for new custom event
ここに良いチュートリアルがあります。