निम्नलिखित काम करता है के रूप में उम्मीद:.each() के साथ jQuery ऑब्जेक्ट्स पर पुनरावृत्ति क्यों करता है मुझे jQuery ऑब्जेक्ट्स नहीं देते?
$(".foo").first().text("hi!")
... क्योंकि first()
रिटर्न एक jQuery वस्तु।
हालांकि, अगर मैं सभी मैचों के लिए text()
विधि के साथ काम करना चाहता हूँ, मैं क्या करने की जरूरत:
$(".foo").each(function(idx, obj) {
$(obj).text("hi!")
}
)
... क्योंकि each()
देता है आप वस्तुओं Dom।
इस चौंकाने अंतर के पीछे डिजाइन कारण क्या है? मैं प्रत्येक मैच के लिए एक jQuery ऑब्जेक्ट बनाने से कैसे बच सकता हूं?
$('li').each(function(index) {
alert(index + ': ' + $(this).text());
});
पहले लिंक प्रति
:
बिल्कुल वही जो मैं कहने जा रहा था, प्लस अगर पहले() ने एक jQuery ऑब्जेक्ट वापस नहीं किया है, तो आपको $ ($ (selector)। फर्स्ट()) का उपयोग करना होगा, जो संक्षेप में jQuery के उद्देश्य से कुछ हद तक संघर्ष करता है। –
ठीक है, मैं इस धारणा के तहत था कि '$ ("। Foo ") ने jQuery ऑब्जेक्ट्स को _ से शुरू करने के लिए बनाया है और उन्हें' प्रत्येक() 'के माध्यम से पारित होने पर" मूल "डोम ऑब्जेक्ट्स में विभाजित किया गया था। मुझे लगता है कि यह बिल्कुल नहीं हो रहा है :) – badp
@ जोन - यह सही नहीं है। '$ (चयनकर्ता)। पहला() * * * एक jQuery ऑब्जेक्ट वापस करता है। आपको इसे $ $ ($ (चयनकर्ता) के साथ फिर से लपेटना नहीं चाहिए। सबसे पहले()) '। एकमात्र jQuery विधि (मेरे ज्ञान के लिए) जो एक सादा डीओएम तत्व देता है वह '.get (0)' होता है जब आप इसे एक संख्या पास करते हैं। संख्या तर्क के बिना, आपको डीओएम तत्वों का एक ऐरे मिलता है। – user113716