Strings in array are no longer strings after jQuery.each()

Posted by Álvaro G. Vicario on Stack Overflow See other posts from Stack Overflow or by Álvaro G. Vicario
Published on 2010-03-26T11:15:14Z Indexed on 2010/03/26 11:33 UTC
Read the original article Hit count: 715

Filed under:
|
|

I'm pretty confused with the behaviour of arrays of strings when I loop them through the jQuery.each() method. Apparently, the strings become jQuery objects inside the callback function. However, I cannot use the this.get() method to obtain the original string; doing so triggers a this.get is not a function error message. I suppose the reason is that it's not a DOM node. I can do $(this).get() but it makes my string become an array (from "foo" to ["f", "o", "o"]).

How can I cast it back to string? I need to get a variable of String type because I pass it to other functions that compare the values among them.

I enclose a self-contained test case (requires Firebug's console):

<!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>

© Stack Overflow or respective owner

Related posts about JavaScript

Related posts about jQuery