jQueryの複数クリックハンドラー。発射の順序を保証する方法は?

StackOverflow https://stackoverflow.com/questions/827107

  •  05-07-2019
  •  | 
  •  

質問

次のような要素に2つのクリックハンドラーがバインドされています:

バインドしているコントロールを含むファイルには、そのコントロールに固有の機能を実行する最初のハンドラーがあります

$("#mycontrol").live("click", function() { alert("foo"); });

そのコントロールを使用するメインページには、ページ固有の機能のためにその要素にバインドする別のハンドラーがあります

$("#mycontrol").live("click", function() { alert("bar"); });

AJAX呼び出しは常にコントロールを変更するため、「ライブ」を使用します。そのため、ハンドラーは再登録されます。しかし、" foo"ができるようにする方法が必要です" bar"の前に発生する一貫して...提案はありますか?

役に立ちましたか?

解決

クリックイベントを1つに組み合わせてみてください:

function foo() { alert("foo"); }
function bar() { alert("bar"); }
$("#mycontrol").live("click", function(){ foo.call(this); bar.call(this); });

他のヒント

概要:

$("#mycontrol").live("click", doFooBar);

function doFooBar() {
    alert("foo");
    alert("bar");
}

次のようなことができます:

var arrEventHandlers = [];

function registerClickEvent(fnCallback)
{
    arrEventHandlers.push(fnCallback);
}

registerClickEvent (function () { alert ("Foo"); });
registerClickEvent (function () { alert ("Bar"); });

function clickHandler ()
{
    for (var i = 0, size = arrEventHandlers.length; i < size; i++)
    {
        arrEventHandlers[i].apply (...);
    }
}

$("#mycontrol").live("click", clickHandler);
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top