दिलचस्प पोस्ट
जावास्क्रिप्ट RegEx नहीं कार्य करना जावा का उपयोग कर सेलेनियम वेबड्राइवर में एक ड्रॉपडाउन मूल्य का चयन कैसे करें iPhone ऐप> आवाज मान्यता जोड़ें? जावास्क्रिप्ट का उपयोग कर ब्राउज़र में मैं वर्ड डॉक्यूमेंट (.doc, .docx) कैसे प्रस्तुत करूं? Symfony2 – खुद के विक्रेता बंडल का निर्माण – परियोजना और जीआईटी रणनीति सीएसएस क्षैतिज सूची आइटम एंड्रॉइड स्टूडियो रिपोर्टिंग क्यों "यूआरआई पंजीकृत नहीं है"? कॉल लॉग के लिए एक सामग्रीऑब्सर्वर कैसे कार्यान्वित करें कॉर्स पहुंच-नियंत्रण-अनुमति-हेडर्स वाइल्डकार्ड को अनदेखा किया जा रहा है? एक ही आईडी वाला कई तत्व एक सीएसएस आईडी चयनकर्ता को जवाब देते हैं .zip से ग्रहण के लिए प्लग इन कैसे स्थापित करें सीएलआई आवेदन में मैं कैसे "अवरोधन" Ctrl + C कर सकता हूं? उबंटू पर रेल स्थापित करने के लिए मणि का उपयोग कैसे करें क्या एंड्रॉइड में .dex फ़ाइलें हैं? एंड्रॉइड एक्सएमएल लेआउट पैरामीटर अपेक्षित के रूप में कार्य न करें

गतिशील रूप से जोड़ा गया सामग्री के लिए jQuery क्लिक ईवेंट जोड़ना

मेरे पास कई पंक्तियों और स्तंभों के साथ एक मेज है जो कि php और mySQL द्वारा आबादी है। कुछ टीडी के लिए मैं दस्तावेज़ में jQuery के क्लिक-ईवेंट जोड़ रहा हूं। उपयोगकर्ता को सामग्री को बदलने देने के लिए फ़ंक्शन।

लेकिन मेरे पास तालिका में पंक्तियों को जोड़ने और उन्हें मैन्युअल रूप से पॉपुलबेट करने का एक विकल्प भी है। लेकिन जब मैं उन पंक्तियों को जोड़ रहा हूं जो दस्तावेज तैयार नहीं हैं, तो वे क्लिक ईवेंट हैंडलर को संलग्न नहीं करेंगे, और इसलिए मैं इनपुट बॉक्स प्राप्त करने के लिए उन्हें क्लिक नहीं कर पा रहा हूं।

<table> <tr> <td class="clickable">Some info</td> <td class="clickable">Some more info</td> <td>Unchangable info</td> </tr> ... more similar rows ... </table> 

और फिर jQuery

 $("tr.clickable").click(function() { //add input fields } $("span#addNewRow").click(function() { $("table").append('<tr><td class="clickable"></td> ... </tr>') } 

वेब के समाधान से एकत्रित समाधान "गतिशील रूप से जोड़ा गया सामग्री के लिए jQuery क्लिक ईवेंट जोड़ना"

आप लाइव इवेंट्स का उपयोग करना चाहते हैं , जो 1.3 में पेश किए गए थे।

 $("tr.clickable").live("click", function() { //add input fields }); $("span#addNewRow").live("click", function() { $("table").append('<tr><td class="clickable"></td> ... </tr>') }); 

अद्यतन: नोट करें कि jQuery 1.7 के रूप में, live() नापसंद है। इसके बजाय on() उपयोग करें और कुछ मामलों में, delegate() एक बेहतर विकल्प हो सकता है नीचे दी गई टिप्पणियां देखें

कैसे उपयोग करने का उदाहरण .on() :

 $("table").on("click", "tr.clickable", function() { //add input fields }); 

आप .delegate () फ़ंक्शन का उपयोग कर सकते हैं जो सभी तत्वों के लिए एक या एक से अधिक ईवेंट में हैंडलर को जोड़ता है जो चयनकर्ता से मेल खाता है, अब या भविष्य में, किसी विशिष्ट रूट तत्वों के आधार पर।

लाइव ईवेंट हैंडलर का उपयोग करें। यह सभी घटनाओं को संभाल नहीं करता है, लेकिन यह क्लिक ईवेंट को संभालता है। हेन्डलर सभी वर्तमान और भविष्य के तत्वों के लिए बाध्य होगा जो चयनकर्ता से मेल खाते हैं।

 $('tr.clickable').live( 'click', function() { ... }); 

तत्व डाली जाने के बाद आपको ईवेंट श्रोताओं को जोड़ना होगा।

यदि आप JQuery का प्रयोग कर रहे हैं तो आप jQuery के लाइब्रेरी लाइवक्वियरी का उपयोग कर सकते हैं, जो आपको उन तत्वों में घटनाओं को जोड़ने के लिए अनुमति देता है जो कि अभी तक डोम में नहीं हैं, ताकि जब आप डोम में कुछ नया डालें तो आपको इवेंट्स को रिंड करने की ज़रूरत न पड़े।