दिलचस्प पोस्ट
एंड्रॉइड में इमोटिकॉन प्रदर्शित करना जावास्क्रिप्ट का उपयोग करके ब्राउज़र से टीसीपी सॉकेट से कनेक्ट करना वैश्विक चर द्वारा निर्धारित आकार के साथ मैं एक सरणी क्यों नहीं बना सकता? एसक्यूएल लॉजिक ऑपरेटर पूर्वता: और और या क्या मुझे 'एसिंक रिक्त' ईवेंट हैंडलर्स से बचना चाहिए? लैम्ब्डा को कैसे सीरियल करना है? पोर्टेबल कोड को सी ++ में कैसे लिखें? कैसे बताऊँ कि एंड्रॉइड में एसडीसीडी घुड़सवार है या नहीं? कैसे "git बाहर निकलने के लिए ठीक से बाहर नहीं निकलने के लिए कैसे (निकास कोड 128)" TortoiseGit पर त्रुटि? java.lang.NoClassDefFound त्रुटि: javax / servlet / http / HttpServletRequest 1 या 0 की लगातार बिट स्ट्रिंग ढूंढना क्या एक UIWebView को सहेजने और पहले से दर्ज किए गए फ़ॉर्म मूल्यों (जैसे उपयोगकर्ता नाम और पासवर्ड) को स्वत: भरने के लिए संभव है? WPF प्रवेश बिंदु की जगह किसी पासवर्ड के लिए संकेत किए बिना PowerShell क्रेडेंशियल्स का उपयोग करना धारावाहिककरण और Deserializing एक्सप्रेशन पेड़ में सी #

jQuery के फ़ंक्शन नए जोड़े गए डोम तत्वों के लिए बाध्य नहीं है

यहां index.html :

 <head> <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script> <script type="text/javascript"> $(document).ready(function() { $('.btn_test').click(function() { alert('test'); }); }); function add(){ $('body').append('<a href=\'javascript:;\' class=\'btn_test\'>test</a>'); } </script> </head> <body> <a href="javascript:;" class="btn_test">test1</a> <a href="javascript:;" onclick="add()">add</a> </body> 

अगर मैं test1 लिंक पर क्लिक करता हूं, तो यह alert('test') दिखाता है, लेकिन अगर मैं add लिंक पर क्लिक करता हूं तो test पर क्लिक करें, यह कुछ भी नहीं दिखाता है।

क्या आप इसे समझा सकते हैं?

Solutions Collecting From Web of "jQuery के फ़ंक्शन नए जोड़े गए डोम तत्वों के लिए बाध्य नहीं है"

2011 के बाद इस प्रश्न पर आने वाले उपयोगकर्ताओं के लिए, ऐसा करने का एक नया उचित तरीका है:

 $(document).on('click', '.btn_test', function() { alert('test'); }); 

यह jQuery 1.7 के रूप में है

अधिक जानकारी के लिए, प्रत्यक्ष और प्रत्यायोजित ईवेंट देखें

आपको "लाइव" क्लिक श्रोता का उपयोग करने की आवश्यकता है क्योंकि शुरुआत में केवल एक तत्व मौजूद होगा।

 $('.btn_test').live("click", function() { alert('test'); }); 

अद्यतन: चूंकि लाइव पदावनत किया गया है, आपको "पर ()" का उपयोग करना चाहिए:

 $(".btn_test").on("click", function(){ alert("test"); }); 

http://api.jquery.com/on/

मेरे जैसे ही समस्याएं हैं जैसे मैं अपने बालों को खींचने के करीब था, तो मुझे समाधान मिला। मैं अलग सिंटैक्स का उपयोग कर रहा था

 $(".innerImage").on("click", function(){ alert("test"); }); 

यह मेरे लिए काम नहीं कर रहा था (आंतरिक इमेज गतिशील रूप से निर्मित डोम है) अब मैं उपयोग कर रहा हूं

 $(document).on('click', '.innerImage', function() { alert('test'); }); 

http://jsfiddle.net/SDJEp/2/

धन्यवाद @ मोश काट्ज़

.click जो वर्तमान में jQuery के दृश्यमान है। आप का उपयोग करने की आवश्यकता है।

 $('.btn_test').live('click', function() { alert('test'); }); 

इसके बजाय Jquery लाइव का उपयोग करें यहां इसके लिए सहायता पृष्ठ है http://api.jquery.com/live/

 $('.btn_test').live(function() { alert('test'); }); 

संपादित करें: live() नापसंद है और आपको इसके बजाय on() उपयोग करना चाहिए।

 $(".btn_test").on("click", function(){ alert("test"); }); 

इसका कारण यह है कि आप इवेंट को क्लिक करते हैं, केवल बाइंडिंग के समय मौजूदा तत्व के लिए बाध्य है। आपको लाइव या प्रतिनिधि का प्रयोग करना होगा, जो इस पृष्ठ पर मौजूदा और भविष्य के तत्वों को ईवेंट बाँध देगा।

 $('.btn_test').live("click", function() { alert('test'); }); 

Jquery Live

आपको क्लिक के बजाय लाइव श्रोता की आवश्यकता है:

 $('.btn_test').live('click', function() { alert('test'); }); 

इसका कारण यह है कि click होने पर पृष्ठ केवल लोड होने पर तत्वों को श्रोता प्रदान करता है। किसी भी नए तत्वों को उन पर इस श्रोता नहीं होगा। लाइव तत्व को क्लिक श्रोता जोड़ता है जब पेज लोड हो जाता है और बाद में उन्हें जोड़ा जाता है

जब दस्तावेज़ आपको लोड करता है, तो आप उन घटकों पर क्लिक ईवेंट को सुनने के लिए प्रत्येक मिलान वर्ग में ईवेंट श्रोताओं को जोड़ते हैं। उसी श्रोता को स्वचालित रूप से उन तत्वों में शामिल नहीं किया जाता है जिन्हें आप डोम में जोड़ते हैं।

क्योंकि घटना दस्तावेज़ में प्रत्येक मिलान तत्व से बंधा है। कोई भी नया तत्व जोड़ा नहीं है, उनके पास एक ही घटनाएं उनसे बंधाई नहीं हैं।

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

 $('.btn_test').click 

उन तत्वों के लिए हेन्डलर जोड़ देगा जो पृष्ठ पर उपलब्ध हैं (इस बिंदु पर 'परीक्षण' मौजूद नहीं है!)

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

 $('.btn_test').live(function() { alert('test'); }); 

विधि पर jquery 1.7 के बाद इस्तेमाल किया जा सकता है और यह वास्तव में अच्छा काम करता है

 <!DOCTYPE html> <html> <head> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"> </script> <script> $(document).ready(function(){ $("p").on("click",function(){ alert("The paragraph was clicked."); $("body").append("<p id='new'>Now click on this paragraph</p>"); }); $(document).on("click","#new",function(){ alert("On really works."); }); }); </script> </head> <body> <p>Click this paragraph.</p> </body> </html> 

इसे कार्रवाई में देखें http://jsfiddle.net/rahulchaturvedie/CzR6n/

या बस अपने पृष्ठ के अंत में स्क्रिप्ट चलाएं

उचित परिणाम देने के लिए आपको उचित बटन क्लिक फ़ंक्शन जोड़ना होगा

 $("#btn1").live(function() { alert("test"); });