今天在做练习的时候发现了一个坑。。
$(function () { // 定义一个数组 var arr = [1, 2, 3, 4, 5]; // 遍历数组 arr.each(function (i, item) { alert(arr[i]) }) })
我的目的是想遍历整个数组,但是,控制台报了个is not a function;
然后,我想应该是arr是原生对象,没有转换成jq对象。
$(function () { var arr = [1, 2, 3, 4, 5]; $arr = $(arr); $arr.each(function (i) { console.log($arr[i]) }) })
果然是这样,此时,控制台就可以打印出arr里的数据。
另外,我发现jQuery还提供了一种方法
$(function () { var arr = [1, 2, 3, 4, 5]; $.each(arr, function (i) { console.log(arr[i]) }) })
原来,
$.each()与$(selector).each()不同, 后者专用于jquery对象的遍历, 前者可用于遍历任何的集合(无论是数组或对象),如果是数组,回调函数每次传入数组的索引和对应的值(值亦可以通过this 关键字获取,但javascript总会包装this 值作为一个对象—尽管是一个字符串或是一个数字),方法会返回被遍历对象的第一参数.
这句话是我在网上查到的,但我对此理解的并不深刻,感觉就是$.each()方法,将对象做了一次封装,直接转换成了jQuery对象。
以上是我自己的理解,可能有不对的地方,希望有大神能给些建议。
注:本文内容来自互联网,旨在为开发者提供分享、交流的平台。如有涉及文章版权等事宜,请你联系站长进行处理。