jQuery技术:为什么jQuery的每个循环函数都保存了对元素对象的引用

最近我发现jQuery在each循环的函数中保存一个变量,如果它已经使用jQuery对象引用设置的话。 例如,在每个方法的第二次和第三次迭代期间, $elem值保持不变,并且它指的是第一个div。

 $("div").each(function(index) { //below $elem is initialized with div reference during first iteration if (index === 0) $elem = $(this); var text = "index: " + index + ", $(this).html(): " + $(this).html() + ", elem.html(): " + $elem.html() + ""; $("#output").append("
  • " + text + "
  • "); });
     li span { color: blue; } li span:nth-child(2) { color: red; } li span:nth-child(4) { color: green; } 
      
    1 DIV
    2 DIV
    3 DIV

    jQuery each loop's output:

      我很惊讶在each循环的第二次迭代期间$elem不会变为nullundefined 。 在该行为之后,输出具有文本:每三行上有1个DIV 。 有没有人知道为什么$elem在每种方法的第二次和第三次迭代中引用第一个div ? – 谢谢

        有没有人知道为什么$ elem在每种方法的第二次和第三次迭代中引用第一个div?

        因为您在第一次迭代中设置了全局变量$elem ,并且此变量以后永远不会更改。 所以在循环和后循环完成后,这个变量将指向第一个div jQuery对象。

        永远不要忘记用var关键字声明变量。 未声明但初始化的变量成为全局变量。 正如您所看到的,它可能导致混乱和错误。

        这是因为varialbe默认情况下没有词法范围。 如果它被声明为

         var $elem 

        相反,每次运行该函数时它都会被重置为undefined。

        有关更多信息,请参见变量语句开发人员页面

          以上就是jQuery教程分享为什么jQuery的每个循环函数都保存了对元素对象的引用相关内容,想了解更多jQuery开发(异常处理)及jQuery教程关注计算机技术网(www.ctvol.com)!)。

          本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

          ctvol管理联系方式QQ:251552304

          本文章地址:https://www.ctvol.com/jquerytutorial/561403.html

          (0)
          上一篇 2021年2月4日
          下一篇 2021年2月4日

          精彩推荐