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: 753
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