दिलचस्प पोस्ट
आप आसानी से कैसे जांच सकते हैं कि प्रवेश फ़ाइल में प्रवेश के लिए निषेध है। NET? जावा स्क्रिप्ट का उपयोग कर किसी फ़ोल्डर के अंदर सभी टेक्सटाइल फाइलें कैसे मुद्रित करें कॉल removeView () पहले बच्चे के माता-पिता पर मैं पायथन में एक 'एन्यूम' का प्रतिनिधित्व कैसे कर सकता हूं? वैरिएबल द्वारा जावास्क्रिप्ट ओब्जेक्ट की सेट करें सफ़ल पाठ 2 कंसोल इनपुट ऑब्जेक्ट की विशेषता के आधार पर ऑब्जेक्ट की एक सूची को कैसे सॉर्ट करना है? AngularJS – templateUrl बनाने में $ routesParams का उपयोग कैसे करें? एक यूआरएल (रेगेक्स) के हिस्से प्राप्त करना मेरे सामाजिक नेटवर्क ऐप के लिए बार-बार एक ही घटना को देखने के बजाय क्वेरी का उपयोग करके फैक्सिंग पोस्ट बढ़ाएं टाइमर और टाइमर टास्क बनाम थ्रेड + नींद में जावा क्या किसी फ़ंक्शन पर तर्कों की एक चर संख्या पारित हो सकती है? एक दृश्य में कई मॉडल JasperException: useBean वर्ग विशेषता के लिए मान अमान्य है PHP: HTTP प्रतिक्रिया कोड कैसे भेजें?

लूप के लिए क्लिक संचालकों को असाइन करें

मुझे कई div का #mydiv1 , #mydiv2 , #mydiv3 , हो रहा है … और उन पर क्लिक करें हैंडलर असाइन करना चाहते हैं:

 $(document).ready(function(){ for(var i = 0; i < 20; i++) { $('#question' + i).click( function(){ alert('you clicked ' + i); }); } }); 

लेकिन जब 'you clicked 3' #mydiv3 (हर दूसरे क्लिक के लिए) पर क्लिक करते हैं 'you clicked 3' दिखाने के बजाय मुझे 'you clicked 20' मिलता है मैं क्या गलत कर रहा हूं?

वेब के समाधान से एकत्रित समाधान "लूप के लिए क्लिक संचालकों को असाइन करें"

जावास्क्रिप्ट में छोरों में क्लोजर बनाने के लिए यह एक सामान्य गलती है। आपको कुछ तरह की कॉलबैक फ़ंक्शन की आवश्यकता है:

 function createCallback( i ){ return function(){ alert('you clicked' + i); } } $(document).ready(function(){ for(var i = 0; i < 20; i++) { $('#question' + i).click( createCallback( i ) ); } }); 

3 जून 2016 को अपडेट करें: चूंकि यह प्रश्न अभी भी कुछ कर्षण प्राप्त कर रहा है और ईएस 6 भी लोकप्रिय हो रहा है, मैं एक आधुनिक समाधान का सुझाव दूंगा। यदि आप ES6 लिखते हैं, तो आप let कीवर्ड का उपयोग कर सकते हैं, जो वैश्विक के बजाय i पाश को स्थानीय में बदलता है:

 for(let i = 0; i < 20; i++) { $('#question' + i).click( function(){ alert('you clicked ' + i); }); } 

यह समझने में छोटा और आसान है

स्पष्ट करने के लिए, मैं 20 के बराबर है क्योंकि क्लिक ईवेंट को लूप के समाप्त होने तक तक निकाल नहीं दिया जाएगा।

 $(document).ready(function(){ for(var i = 0; i < 5; i++) { var $li= $('<li>' + i +'</li>'); (function(i) { $li.click( function(){ alert('you clicked ' + i); }); }(i)); $('#ul').append($li); } }); 

आप क्लिक हैंडलर को एक बार (या कम से कम कई अनावश्यक क्लोजर नहीं बनाते हुए) के साथ मिलकर प्राप्त कर सकते हैं। सभी वर्गों को एक कक्षा में mydivs , फिर:

 $(document).ready(function(){ $('.mydivs').click(function(){ // Get the number starting from the ID's 6th character // This assumes that the common prefix is "mydiv" var i = Number(this.id.slice(5)); alert('you clicked ' + i); }); }); 

प्रारंभिक अक्षर बंद करने के लिए slice स्ट्रिंग पद्धति का उपयोग करते हुए, यह इसकी संख्या प्राप्त करने के लिए तत्व की आईडी को देखता है

नोट: इसका इस्तेमाल करना बेहतर हो सकता है

 $('#divcontainer').on('click', '.mydivs', function(){ 

के बजाय

 $('.mydivs').click(function(){ 

आम तौर पर, यदि आप बड़ी संख्या में आइटम पर क्लिक हैंडल असाइन करने के लिए देख रहे हैं, तो आप एक कंटेनर (उच्च स्तर की div) चाहते हैं जो आपके लिए क्लिकों की व्याख्या करता है, क्योंकि डोम से बुलबुले क्लिक करें

 <div id="bucket"> <span class="decorator-class" value="3"> ... </div> <script> $(document).ready(function(e){ $("#bucket").live('click', function(){ if(e.target).is('span'){ alert("elementid: " + $(e.target).val()); } } } <script> 

'क्लिक' हैंडलर को संलग्न करने के लिए प्रयोग करने पर आप अपना डेटा पास करने के लिए इवेंट डेटा का उपयोग कर सकते हैं:

 for(var i = 0; i < 20; i++) { $('#question' + i).on('click', {'idx': i}, function(e) { alert('you clicked ' + e.data.idx); }); } 
 // // let's creat 20 buttons // for(var j = 0; j < 20; j++) { $('body').append($('<button/>', {type: 'button', id: 'question' + j, text: 'Click Me ' + j})) } // // Passing data to the handler // for(var i = 0; i < 20; i++) { $('#question' + i).on('click', {'idx': i}, function(e) { console.log('you clicked ' + e.data.idx); }); } 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>