2010-03-26 24 views
14

के बाद स्ट्रिंग्स नहीं हैं, जब मैं jQuery.each() विधि के माध्यम से उन्हें लूप करता हूं तो मैं तारों के सरणी के व्यवहार से काफी उलझन में हूं। जाहिर है, तार कॉलबैक फ़ंक्शन के अंदर jQuery ऑब्जेक्ट्स बन जाते हैं। हालांकि, मैं मूल स्ट्रिंग प्राप्त करने के लिए this.get() विधि का उपयोग नहीं कर सकता; ऐसा करने से यह ट्रिगर करता है। यह एक फ़ंक्शन त्रुटि संदेश नहीं है। मुझे लगता है कि कारण यह है कि यह एक डोम नोड नहीं है। मैं $(this).get() कर सकता हूं लेकिन यह मेरी स्ट्रिंग को सरणी बनाता है ("foo" से ["f", "o", "o"] तक)।सरणी में स्ट्रिंग्स अब jQuery.each()

मैं इसे स्ट्रिंग पर वापस कैसे डाल सकता हूं? मुझे String प्रकार का एक चर प्राप्त करने की आवश्यकता है क्योंकि मैं इसे अन्य कार्यों में पास करता हूं जो उनके बीच मूल्यों की तुलना करते हैं।

मैं एक आत्म निहित परीक्षण का मामला संलग्न (Firebug के कंसोल की आवश्यकता है):

<!DOCTYPE html> 
<html> 
<head><title></title> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script> 
<script type="text/javascript"><!-- 
$(function(){ 
    var foo = []; 
    var $foo = $(foo); 

    foo.push("987"); 
    $foo.push("987"); 

    foo.push("654"); 
    $foo.push("654"); 

    $.each(foo, function(i){ 
     console.log("foo[%d]: object=%o; value=%s; string=%o", i, this, this, $(this).get()); // this.get() does not exist 
    }); 
    $foo.each(function(i){ 
     console.log("$foo[%d]: object=%o; value=%s; string=%o", i, this, this, $(this).get()); // this.get() does not exist 
    }); 
}); 
//--></script> 
</head> 
<body> 

</body> 
</html> 
+1

मुझे अभी भी एक ही समस्या का अनुभव हुआ, हालांकि पता चला कि यह सख्त मोड में अपेक्षित काम करता है। – Joost

उत्तर

13

संपादित करें/स्पष्टीकरण: कॉलबैक फ़ंक्शंस दो तर्क लेता है, दूसरा वैरिएबल का मान है। this के बजाय इसका उपयोग करें मैंने दोनों प्रकारों का परीक्षण किया है और सबकुछ अपेक्षित काम करता है (तार अभी भी तार हैं)।

>>> $.each(['foo','bar'], function(i, s){ console.info(s, typeof s) }) 
foo string 
bar string 

>>> $(['foo','bar']).each(function(i, s){ console.info(s, typeof s) }) 
foo string 
bar string 
+0

काम करता है ओह माय ... अब मैं समझ गया! –

+2

'यह' एक jQuery ऑब्जेक्ट नहीं है जब तारों के माध्यम से लूपिंग होता है, यह स्ट्रिंग को 'स्ट्रिंग' ऑब्जेक्ट में लपेटता है। यदि आप 'this.toString()' करते हैं तो आपको नियमित स्ट्रिंग मिल जाएगी। – David

3

यह मेरा Firefox 3.5 में काम करता है:

$(function(){ 
    var foo = []; 

    foo.push("abc"); 
    foo.push("def"); 

    $.each(foo, function(i){ 
     console.log(typeof ("" + this)); 
     }); 
}); 

कंसोल से पता चलता

string 
string
+0

हमम ... आपने मुझे एक विचार दिया: 'स्ट्रिंग (यह) ' –

+0

@ अलवारो जी। विकारियो: अच्छा लगता है :) मैं बहुत अधिक जावास्क्रिप्ट नोब हूं, इसलिए मैं पहले हैक का उपयोग करता हूं जो – balpha

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