दिलचस्प पोस्ट
मैं PowerShell को .NET 4 रनटाइम के साथ कैसे चला सकता हूं? जावा में फर्चा लूप में कॉलिंग हटाने जावा त्रुटि: केवल एक प्रकार का आयात किया जा सकता है XYZ एक पैकेज को हल करता है रिक्त तत्वों युक्त वस्तुओं की एक सरणी कैसे सॉर्ट करें? गोलाकार कोनों के साथ संपादन टेक्स्ट कैसे बनाएं? जेएसएफ फाइलें वेब-आईएनएफ़ निर्देशिका के अंदर, मैं उनसे कैसे पहुंचूं? वेतन वृद्धि और पूर्व वृद्धि की अवधारणा? शेयरपोस्ट कैलेंडर में दिनांकित अनुस्मारक UIButton: हिट क्षेत्र को डिफ़ॉल्ट हिट क्षेत्र से बड़ा करना मेमोरी आवंटन चार * और चार UITableView में आलसी लोड छवियां जावास्क्रिप्ट में मैं एक बिटवायर ऑपरेटर का उपयोग कहाँ करूँगा? स्वचालित / प्रतिलिपि / चालन सीटीओआर की प्रतिलिपि बनाने और कॉपी / स्थानांतरण असाइनमेंट ऑपरेटर के लिए शर्तें? आवेदन कैसे करें! महत्वपूर्ण सीएसएस () का उपयोग? पास पैरामीटर पी: जावास्क्रिप्ट से दूरसंचार

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 पर क्लिक करें, यह कुछ भी नहीं दिखाता है।

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

वेब के समाधान से एकत्रित समाधान "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"); });