Estoy bastante confundido con el comportamiento de las matrices de cadenas cuando las bucleo a través del método jQuery.each()
. Aparentemente, las cadenas se convierten en objetos jQuery dentro de la función de devolución de llamada. Sin embargo, no puedo usar el método this.get()
para obtener la cadena original; al hacerlo se desencadena un this.get no es una función mensaje de error. Supongo que la razón es que no es un nodo DOM. Puedo hacer $(this).get()
pero hace que mi cadena se convierta en una matriz (desde "foo"
hasta ["f", "o", "o"]
).Las cadenas en la matriz ya no son cadenas después de jQuery.each()
¿Cómo puedo devolverlo a la cadena? Necesito obtener una variable del tipo String
porque la paso a otras funciones que comparan los valores entre ellas.
Adjunto un caso de prueba autónomo (requiere consola de 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>
Acabo de experimentar el mismo problema, sin embargo descubrí que esto funciona como se espera en modo estricto. – Joost