مسج النقر المتعدد handlers..how لضمان ترتيب اطلاق النار؟

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

  •  05-07-2019
  •  | 
  •  

سؤال

ولقد 2 انقر معالجات binded إلى عنصر مثل ذلك:

في الملف الذي يحتوي على عنصر تحكم وأنا ملزم ل، لدي معالج الأول، والتي لا بعض وظائف محددة إلى أن السيطرة

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

في الصفحة الرئيسية والذي يستخدم تلك السيطرة، لقد معالج آخر ملزمة لهذا العنصر لصفحة وظائف محددة

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

وأنا استخدم 'يعيش' بسبب المكالمات AJAX تتغير السيطرة في كل وقت، لذلك سيتم إعادة تسجيلها معالجات. ولكن أنا بحاجة إلى وسيلة بحيث "فو" يحدث قبل "شريط" باستمرار ... أي اقتراحات؟

هل كانت مفيدة؟

المحلول

وحاول الجمع بين النقر الأحداث في واحد:

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