2013-07-03 5 views
23

ऐसे कई प्रश्न हैं जो यह पूछ रहे हैं, लेकिन अंत में वे सभी संलग्न करना चाहते हैं। घटनाओं पर क्लिक करें और नहीं। प्रत्येक और इसलिए उन सभी में आम तौर पर स्वीकृत उत्तर में $("body").on("click", ".selector", function(){}); शामिल है और यह निश्चित रूप से मैं नहीं हूं चाहते हैं।jQuery में गतिशील वस्तुओं पर .each का उपयोग कर?

मेरे पास कुछ जेनरेट किए गए इनपुट हैं और मुझे एक ही समय में प्रत्येक के मूल्य को बदलने की आवश्यकता है। आम तौर पर मैं $(".inputs").each(function(){$(this).val("new-value")}; या उन पंक्तियों के साथ कुछ करता हूं, हालांकि, मैं गतिशील पहलू की वजह से नहीं कर सकता।

तो आप $("body").on("each", ".inputs", function(){}); कैसे करेंगे?

+1

यह गतिशील क्यों है यदि इससे कोई फर्क पड़ता है? – Esailija

+5

यदि आप स्थिति को अधिक स्पष्ट रूप से समझाएंगे, तो इससे मदद मिलेगी, क्योंकि यह खड़ा है क्योंकि यह सवाल ज्यादा समझ में नहीं आता है। – Pointy

+1

"गतिशील पहलू के कारण" किसी बिंदु पर आप मूल्यों को बदलना चाहते हैं ... कब? –

उत्तर

5

वास्तव में, यह setTimout अंदर चाहते प्रत्येक चल के रूप में सरल है।

setTimeout(function(){ 
    $(".inputs").each(function(){$(this).val("new-value")}); 
}, 5000); 
+0

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

+0

सेटटाइमआउट एक विशिष्ट अवधि के बाद कोड चलाता है। तो यदि आपके डाले गए तत्वों के बाद सेटटाइमआउट चलाने के लिए काफी लंबा है, तो यह काम करेगा। यदि आपके तत्व डालने से पहले यह चलता है, तो यह काम नहीं करेगा। उस स्थिति में जहां उपयोगकर्ता स्क्रीन के साथ बातचीत कर रहा है, मेरे पास उपरोक्त कुछ भी नहीं करना सबसे अच्छा है क्योंकि मैं इसे लोड पर कर रहा था। यदि आप अपना फ़ंक्शन किसी अन्य स्क्रिप्ट में डालते हैं और फिर चलाते हैं कि सभी उपयोगकर्ता इंटरैक्शन पूरा होने के बाद आपको ठीक होना चाहिए। –

2

आप $(".inputs").each(function(){$(this).val("new-value")}; गतिशील तत्वों पर पूरी तरह से ठीक उपयोग कर सकते हैं। एक तत्व गतिशील रूप से जोड़े जाने के बाद आपको केवल स्क्रिप्ट को फिर से चालू करने की आवश्यकता है।

टिप्पणियों से मुझे लगा कि कुछ गलतफहमी 'प्रत्येक' के बारे में मौजूद है। 'प्रत्येक' एक घटना नहीं है और इसलिए 'प्रत्येक' कहा जाता है तो कोई घटना नहीं निकाल दी जाती है। जोड़ा किसी भी नए तत्वों के साथ

setInterval(function(){ $(".inputs").each(function(){$(this).val("new-value")}; },500); 
+0

वह * ऐसा कर सकता था, लेकिन क्यों, जब '$ (" इनपुट ")। वैल (" नया-मूल्य "); 'भी काम करता है? – Pointy

+0

क्या होगा यदि आप इसे पुन: चालू नहीं कर सकते हैं? अर्थात। body.on के लाभ का उपयोग करें? –

+0

@ पॉइंटी मैंने सोचा कि वह उस स्क्रिप्ट को सरलीकृत करता है, लेकिन असल में प्रत्येक इनपुट के लिए अलग-अलग मूल्य निर्धारित करना चाहता था। o_O पर, यदि आप गतिशील रूप से तत्व जोड़ना चाहते हैं, तो आप उस स्क्रिप्ट को फिर से चलाने में सक्षम हैं। आप और गतिशील रूप से तत्व कैसे जोड़ देंगे? उस अधिकार के लिए कुछ लिपि की आवश्यकता है? –

3

$.each काम करता है: आपके द्वारा जोड़े गए तत्वों की जानकारी रखने के लिए जब वे जोड़ रहे हैं आप एक टाइमर आवश्यकता होगी पर कोई नियंत्रण नहीं है क्योंकि चाहते हैं।

http://jsfiddle.net/4SV7n/

कुछ अलग हर बार कर रहा:

http://jsfiddle.net/4SV7n/1/

+1

बेशक यह काम करता है। जब भी मैं चाहूं स्क्रिप्ट को कॉल करने की लक्जरी थी तो यह आसान होगा। दुर्भाग्यवश, आवश्यकता के बिंदु पर। लाभ यह है कि मेरे पास यह नियंत्रण नहीं है। –

+0

क्या आप एक पहेली बना सकते हैं जो कि आप किस बारे में बात कर रहे हैं उस पर कुछ प्रकार का प्रयास है, तो यह और स्पष्ट है? मुझे यह पता लगाने में कठिनाई हो रही है कि आप क्या करने की कोशिश कर रहे हैं। –

+0

ऐसा इसलिए है क्योंकि आप इसे क्लिक करने पर कॉल कर रहे हैं, अगर हमें किसी भी घटना के बिना फ़ंक्शन को आग लगाना है –

संबंधित मुद्दे