今天在做练习的时候发现了一个坑。。
$(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对象。
以上是我自己的理解,可能有不对的地方,希望有大神能给些建议。








网友评论