दिलचस्प पोस्ट
छवि UriSource और डेटा बाइंडिंग दो सामान्य प्रकारों के साथ एक इंटरफ़ेस लागू करने वाला जावा क्लास कैसे बना सकता है? चित्र आकार स्वचालित रूप से लेबल आकार के लिए स्केल करें MySQL में पार्स तिथि एक न खत्म होने वाले कार्य को लागू करने का उचित तरीका। (टाइमर बनाम कार्य) एक जावास्क्रिप्ट फ़ाइल में JSF EL मिश्रण यदि किसी तत्व में कोई वर्ग शामिल है तो टेस्ट करें? ऐप में आईफ़ोन पर यूट्यूब वीडियो सहेजें जावास्क्रिप्ट में तेजी से स्थिर सॉर्टिंग एल्गोरिथ्म कार्यान्वयन गुणों को डिसेराइज करने के लिए जेसन.नेट कन्वर्टर्स का उपयोग करना स्थिर लिंक किए गए DLL के लिए डीएलएल खोज पथ को बदलना Qt निर्माता – परियोजना त्रुटि: Xcode ठीक से सेट नहीं है आपको / usr / bin / xcodebuild चालू कर लाइसेंस अनुबंध की पुष्टि करने की आवश्यकता हो सकती है सरणी वापस करने के लिए सी फंक्शन को घोषित करना जीसी को कब कॉल करना स्वीकार्य है? संकलक? इनपुट प्रकार दिनांक समय – मान प्रारूप?

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

मुझे कई 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>