سؤال

مسج لديه حقا مفيد الحدث الموثق يسمى يعيش() والتي سوف تضيف الأحداث إلى عناصر DOM على الطاير (حتى العناصر التي سيتم إضافتها لاحقا إلى DOM).المشكلة هو أنه يعمل فقط على أحداث محددة (المذكورة هنا في الوثائق).

أنا حقا أريد أن أعيش الأحداث التركيز طمس وتغيير التي لا يدعمها يعيش الآن.بالإضافة إلى, إذا كنت يمكن أن تجعل يعيش الأحداث المخصصة وسوف تكون كبيرة في قواعد اللعبة بالنسبة بلدي التطبيق.أكثر من الكود الذي لدي الآن هو مخصص rebinding القديمة الأحداث (تغيير التركيز ، و أحداث مخصصة لصنع العناصر القابلة للسحب أو يمكن تغيير حجم) الجديدة دوم العناصر التي تمت إضافتها عن طريق ajax.

أي فكرة ؟ أعتقد أن هذا الحدث وفد هو الطريق للذهاب, ولكن أنا الآن انها سوف تجعل القانون أكثر تعقيدا.ربما البرنامج المساعد أن التعامل مع الحدث الوفود...غير متأكد.مساعدتي في العثور على حل.

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

المحلول

وهذه الوظيفة هي متوفرة الآن في مسج 1.4. live() الآن يدعم جميع الأحداث جافا سكريبت (بما في ذلك أحداث مخصصة)، وأدخلت الأحداث focusin وfocusout كما محتدما إصدارات focus وblur.

ومن 1.4 مسج على .live () :

<اقتباس فقرة>   

واعتبارا من مسج 1.4، ويدعم طريقة .live () أحداث مخصصة وكذلك جميع الأحداث جافا سكريبت. استثناءان: منذ التركيز وطمس ليست في الواقع محتدما الأحداث، ونحن بحاجة إلى استخدام focusin وfocusout بدلا

.

نصائح أخرى

وإذا لم يكن في مسج على الأرجح هناك سبب. البق متصفح الخ التي تجعل من غير موثوق بها. وأود أن الانتظار حتى تقوم بتنفيذ أو حاول استخدام البرنامج المساعد الأصلي الذي أصبح HTTP: //docs.jquery. كوم / الإضافات / livequery

وتحرير:

والرجال downvote نيس. هناك سبب انها ليست في مسج وأشك بشدة لانهم <م> كسول . قضيت فعلا الوقت في قراءة مصدر وتبحث عن لماذا يتم تنفيذها فقط بعض الأحداث في العيش () وأنا لا يمكن العثور على السبب. حتى إذا كان يعرف شخص ما ... يرجى ينورنا.

مسج ل live() الأسلوب لن ينجح لأن التركيز و طمس الأحداث لا تنتشر (فقاعة) مثل غيرها دوم الأحداث.مسج فريق في نهاية المطاف سوف أعرض هذه الوظيفة ولكن سوف يكون الاصطناعي (دليل محتدما).

إذا لم أكن باستخدام مسج أراد فوائد live() وأود أن استخدام الحدث اسر في المتصفحات التي تدعم ذلك (غير معظم المتصفحات IE) و في أي وأود أن استخدام onFocusIn/onFocusOut الأحداث (هذه الأحداث ، على عكس التركيز/طمس هل فقاعة).

هنا مثال:

function onFocus(el, fn) {
    var outerFn = function(e) {
        e = e || window.event;
        if ((e.target || e.srcElement) === el) {
            fn.call(el);
        }
    };
    if (document.body.addEventListener) {
        // This is event capturing:
        document.body.addEventListener('focus', outerFn, true);
    } else {
        // This is event delegation:
        document.body.attachEvent('onfocusin', outerFn);
    }
    return outerFn;
}

استخدامه:

onFocus(document.getElementById('myInputField'), function(){
    log('FOCUSED!!!');
});

مماثل التجريد يمكن أن تستخدم في طمس وتغيير الأحداث.

قراءة المزيد عن هذا الحدث من أجل (التقاط/محتدما) هنا: http://www.quirksmode.org/js/events_order.html


قد يكون من الجدير بالذكر أن liveQuery, مسج المساعد, لأنه يعمل على إعادة يربط الحدث الجديد العناصر ؛ أنها لا تعمل إلا مع مسج DOM أساليب التلاعب مثل 'إلحاق', 'insertBefore' الخ.حتى إذا كنت تريد إضافة عنصر جديد دون استخدام مسج انها لن تنجح.

وأنت قد ترغب في التحقق من jQuery.Listen المساعد ارييل Flesley ل. انها مماثلة ليعيش () الأحداث وlivequery () المساعد، ولكن التركيز الدعم في (الأحداث) وطمس ().

http://flesler.blogspot.com/2007/10/jquerylisten.html

ولقد استعملت بنجاح livequery المساعد كتكملة لل.live وظيفة () في مسج. لا يمكن إلا أن ربط الأحداث مثل التركيز، وطمس وتغيير (التي تعيش () لا تدعم ذلك، اعتبارا من 1.3.2) ولكن أيضا يوفر لك آلية لربط الأحداث مخصصة لعناصر DOM على الطاير. على سبيل المثال، واستخدامها لربط القابل للسحب وdroppables لبعض العناصر DOM التي ستضاف خلال اياكس. يجعل قانون بلدي أبسط من ذلك بكثير لقراءة وأسهل للمحافظة عليه.

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