حدث jQuery المخصص يطلق النار في مكان واحد ولكن ليس آخر

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

سؤال

ربما يكون هذا مجرد جهلي الخاص بكيفية عمل الأحداث ، لكن هل يمكن لشخص ما أن يشرح هذا: لن يطلق حدث مخصص في أعلى وظيفة ، ولكنه سيطلق النار في رد الاتصال داخل هذه الوظيفة.

الأعمال التالية (حرائق الحدث المخصص):

function foo() {

    $.ajax( ... , function() {
            $.event.trigger("custom" , data );
    });

}

foo();

ما يلي لا يعمل (الحدث المخصص لا يطلق النار):

function foo() {
    $.event.trigger("custom" , data );

    $.ajax( ... , function() {
            ...
    });

}

foo();

ملزمة الحدث كما يلي:

$(document).bind("custom custom1 custom2" , function( event, data ) {
    ...
});

أريد حقًا أن تطلق النار مباشرة في الجزء العلوي من الوظيفة. اقدر اى مساعدة!

ملاحظة: إنها نفس المشكلة عبر المتصفحات ، ومع أو بدون وسيطة بيانات إضافية.

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

المحلول

حقيقة أنه يعمل في رد الاتصال Async يقودني إلى الاعتقاد أنه عندما Foo () ؛ يسمى ، الربط الفعلي لم يحدث. عليك أن تكون حذراً في ترتيب الأشياء عند القيام بذلك.

من المحتمل أن تعمل إجابة Jwwishart لأنه ملزم أولاً ... ثم استدعاء فو. إذا قمت بنشر الكود بأكمله بترتيب مكان حدوث الأشياء على الرغم من أنه قد يكون من الأسهل تصحيحه.

نصائح أخرى

data يبدو أنه غير محدد في الطريقة الثانية (غير العمل).

عندما أحدد data, ، يعمل كما هو متوقع.

الأعمال التالية ...؟

أنا فقط ربطت "العرف" حتى ، لقد قمت بإزالة الاثنين الآخرين (للحصول على الأمور بسيطة قدر الإمكان.)

$(document).bind("custom" , function( event, data ) {
    alert(data);
});


function foo() {
    $.event.trigger("custom" , "Works" );
}

foo();
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top