1

次のように要素にバインドされた2つのクリックハンドラーがあります。

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

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

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

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

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

4

3 に答える 3

5

どうですか:

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

function doFooBar() {
    alert("foo");
    alert("bar");
}
于 2009-05-05T22:05:03.577 に答える
4

クリック イベントを 1 つにまとめてみます。

function foo() { alert("foo"); }
function bar() { alert("bar"); }
$("#mycontrol").live("click", function(){ foo.call(this); bar.call(this); });
于 2009-05-05T22:05:40.360 に答える
2

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

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);
于 2009-05-05T22:08:18.827 に答える