在jQuery.each()之后,数组中的字符串不再是字符串

时间:2010-03-26 11:15:14

标签: javascript jquery firebug

当我通过jQuery.each()方法循环它时,我对字符串数组的行为很困惑。显然,字符串成为回调函数中的jQuery对象。但是,我无法使用this.get()方法获取原始字符串;这样做会触发 this.get不是函数错误消息。我想原因是它不是DOM节点。我可以$(this).get()但它会使我的字符串成为一个数组(从"foo"["f", "o", "o"])。

如何将其转换回字符串?我需要获得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>

2 个答案:

答案 0 :(得分:13)

编辑/澄清:calllback函数有两个参数,第二个是变量的值。使用它而不是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

答案 1 :(得分:3)

这适用于我的Firefox 3.5:

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

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

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

控制台显示

string
string