2011-07-06 24 views
7

मैं जानता हूँ कि जब आप एक तत्व गतिशील बनाते हैं, आप की तरह कुछ का उपयोग करने के कैसे करना है मैं यह लाइव बना देता हूं ताकि यह गतिशील रूप से बनाए गए तत्वों के साथ बातचीत कर सके।datepicker लाइव बनाना JQuery

+1

तो तुम को चलाने के लिए '.datepicker ({})' कुछ तत्वों पर के रूप में वे गतिशील डोम में लोड कर रहे हैं करना चाहते हैं? – Luke

उत्तर

11

के अनुसार: Jquery .live works but not with .datepicker

यह काम करना चाहिए:

$("#tdInput1").live("click", function(){ 
    $(this).datepicker({ 
     inline: true 
    }); 
}); 

संपादित करें: इस सवाल का जवाब jQuery के पुराने संस्करणों के लिए है। JQuery 1.9+ के लिए कृपया विशाल का जवाब आज़माएं।

+0

एक आकर्षण की तरह काम नहीं करता। धन्यवाद! – craigtb

7

आप दो अलग-अलग चीजों से निपट रहे हैं। jQuery का live ईवेंट बाइंडिंग के लिए है, जबकि datepicker विशेष रूप से किसी ईवेंट से जुड़ा हुआ नहीं है, बल्कि समय में एक पल में तत्व को कार्यक्षमता जोड़ता है।

एकमात्र कारण live काम करता है की घटनाओं के साथ है कि jQuery वास्तव में एक पूर्वज तत्व को ईवेंट हैंडलर देता है, और (जावास्क्रिप्ट में जिस तरह की घटनाओं बबल सामने करने के लिए धन्यवाद), पूर्वज वास्तव में घटना और प्रतिनिधियों को प्राप्त करता है यह जैसे कि वह आया था तत्व से। सिद्धांत जटिल है, लेकिन लंबा और छोटा, यह केवल घटनाओं के साथ काम कर सकता है।

यदि आप डेटपिकर कार्यक्षमता जोड़ना चाहते हैं, तो इसे बनाए जाने के बाद नए तत्व पर datepicker फ़ंक्शन को कॉल करें।

+0

धन्यवाद .. लंबे समय तक इसे हल करने का प्रयास कर रहा है जब तक कि मुझे आपका उत्तर – user1862764

19

स्वीकार किए जाते हैं समाधान पर, कीबोर्ड की घटनाओं के साथ काम नहीं करेंगे .. तो मैं यह करने के लिए बदलना पड़ा:

$('.parent').on('focusin', '.datepicker', function(e) { 
    $(this).datepicker(options); 
}); 

jQuery 1.9.1 के बाद से .on को .live बदलना पड़ा .live विधि शामिल नहीं है । माउस घटनाओं के साथ-साथ कीबोर्ड फ़ोकस ईवेंट के लिए उपरोक्त काम करता है।

+0

मैंने इसे केवल कोशिश की है, लेकिन यह मुझे त्रुटि दे रही है कि कोई डेटपिकर विधि नहीं है। क्या आप मेरी मदद कर सकते हैं –

+0

@ सान्यामजैन jQuery का कौन सा संस्करण आप उपयोग कर रहे हैं? – Vishal

+0

और क्या आपने [jQueryUI] (http://jqueryui.com/) लाइब्रेरी शामिल की? – Vishal

0

मुझे लगता है कि और अधिक उचित समाधान है कि:

$('input.datepickerClass').live('focus', function(){ 
    if (false == $(this).hasClass('hasDatepicker')) { 
     $(this).datepicker({ options }); 
    } 
}); 
+0

कृपया केवल स्रोत कोड से बचें - समझाएं कि आप क्या कर रहे हैं ताकि पाठक समझ सकें कि आप क्या कहने की कोशिश कर रहे हैं और क्यों। –