jquery $ .each函数console.log(this),打印结果是字符串,如" a" ' B' ' C'

时间:2017-06-07 04:50:45

标签: javascript jquery each

var arr=["aaa","bbb","cccc"];
$.each(arr,function(a,b){
    console.log(this);
})

结果位于以下Chrome控制台中:

enter image description here

Chrome控制台

我认为结果是" aaa" " bbb"," cccc",为什么结果是" a" "" "" ' B'' B'' B' ...

4 个答案:

答案 0 :(得分:0)

尝试更改为:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/parallax/2.1.3/parallax.min.js"></script>
<!DOCTYPE HTML>
<html lang="en-US">
<head>
    <meta charset="UTF-8">
    <title></title>
    <style type="text/css">
        #container {
            width: 100%;
            height: 500px;
        }
    </style>

</head>
<body>
    <div id="container">
        <div id="scene">
          <div class="layer" data-depth="0.00"><img src="layer1.png"></div>
          <div class="layer" data-depth="0.20"><img src="layer2.png"></div>
          <div class="layer" data-depth="0.40"><img src="layer3.png"></div>
          <div class="layer" data-depth="0.60"><img src="layer4.png"></div>
          <div class="layer" data-depth="0.80"><img src="layer5.png"></div>
          <div class="layer" data-depth="1.00"><img src="layer6.png"></div>
        </div>
    </div>


    <script src="jquery-3.2.1.min.js"></script>
    <script src="parallax.js"></script>
    <script>
      var scene = document.getElementById('scene');
      var parallax = new Parallax(scene);
    </script>
</body>
</html>

答案 1 :(得分:0)

原因是在each循环内,this的范围不是正在迭代的当前元素。

JQuery.each()中, 您用作a的变量是迭代索引 您用作b的变量是当前的迭代元素。

如果要记录当前的迭代元素,请使用b代替this

$.each(arr,function(a,b){
    console.log(b);
                ▲
})

答案 2 :(得分:0)

您提供的图片中的结果是正确的。控制台仅显示字符串的各个字符及其长度信息,但如果查看实际值(原始值),它确实显示“aaa”,“bbb”和“cccc”。

答案 3 :(得分:0)

$.each(arr,function(a,b){
    console.log(new String(b));
    console.log(this);
})

当你使用jQuery.each来循环“arr”时,回调时绑定到新的String(arr [i])

tableswitch

并且参数“b”是您的预期结果