/ / jQuery: प्लगइन्स को इनिशियलाइज़ करने के लिए लाइव फ़ंक्शन - jquery, विजेट, लाइव

jQuery: प्लगइन्स प्रारंभ करने के लिए लाइव फ़ंक्शन - jquery, विजेट, लाइव

मैंने कुछ छोटे विजेट-प्लगइन्स बनाए हैं, जो उदाहरण के लिए लागू हो रहे हैं। एक टेक्स्टबॉक्स $ की तरह ("input.txtbox")। myTextbox ();

अब मैं गतिशील रूप से सामग्री लोड करने के लिए अजाक्स का उपयोग कर रहा हूं और मैं सोच रहा था: वहाँ एक तरीका है कि प्रत्येक पाठ बॉक्स जो ajax के माध्यम से लोड किया जाएगा करने के लिए प्लगइन लागू करने के लिए jquery का लाइव फ़ंक्शन है?

धन्यवाद

उत्तर:

जवाब के लिए 2 № 1

आप इसका उपयोग नहीं कर सकते .live() लेकिन आप एक वैश्विक स्थापित कर सकते हैं ajaxSuccess या ajaxComplete हैंडलर।

$.ajaxSuccess(function ()
{
$("input.txtbox").myTextbox();
});

आप इनपुट पर फिर से इनिशियल न करके इसे और अधिक कुशल बनाना चाह सकते हैं जो पहले से ही इनिशियलाइज़ हो चुके हैं; कुछ इस तरह

$.ajaxSuccess(function ()
{
$("input.txtbox:not(.myTextbox)").myTextbox().addClass("myTextbox");
});

जवाब के लिए 2 № 2

DOM के दौरान वास्तव में इवेंट ट्रिगर होते हैंसंरचना संशोधित है। जब भी एक नया टेक्स्टबॉक्स बनाया जाता है और दस्तावेज़ में डाला जाता है, तो आप अपने प्लगइन इनिशियलाइज़ेशन कोड को बांधने के लिए प्रतिक्रिया कर सकते हैं। आपके उद्देश्य से सवाल करने वाली घटनाएं DOMNodeInserted हैं (नोड को एक अन्य तत्व में एक बच्चा नोड जोड़ा गया था) और DOMNodeInsertedIntoDocument (नोड शुरू में दस्तावेज़ में डाला गया था)।

ध्यान दें कि इन घटनाओं की उपलब्धता नहीं हैगारंटीकृत / घटना सभी ब्राउज़रों द्वारा समर्थित नहीं है। इस प्रकार आपको अपने लक्षित ब्राउज़रों / कार्यान्वयनों के साथ इसकी जाँच करने की आवश्यकता है और शायद यह ब्राउज़रों में काम करने के लिए मैट के दृष्टिकोण का उपयोग करें।

अपने लक्षित ब्राउज़रों को घटनाओं का समर्थन करते हुए मान लें कि आप कुछ ऐसा ही करते हैं:

$(document).live("DOMNodeInserted", function(e){
// Get inserted node from event and initialize your plugin if the element is initially seen
});