我需要将数据添加到每个元素之后递增的一组图像中。Jquery in Action的代码如下:
settings.thumbnails$ = this.filter('img');
settings.thumbnail$.each(function(n) {
$(this).data('photo-index',n);
书中说,使用.each()将为记录其在列表中位置的每个元素添加一个惟一的数字。我不明白为什么会这样,因为附加到‘n
-index’的值在每次迭代中都是一样的……
有没有人看到我错过了什么?
发布于 2011-08-20 03:04:51
var data = ['foo','bar','foobar','baf','woot'];
$.each(data,function(iterator,element){
console.log(iterator+'. '+element);
});
您没有注意到.each
在函数调用中有两个可以接受的参数。
因此,要将其应用于您的代码:
settings.thumbnails$ = this.filter('img');
settings.thumbnails$.each(function(i,e) { // add back the iterator (i)
$(this).data('photo-index',i); // reference it here
});
您还在.each
调用中引用了"settings.thumbnail$“(单数),这可能是问题所在,但我不知道您要做什么。
或者,您可以使用.each()
并使用它的本机索引进行赋值:
settings.thumbnails$.each(function(i,e){
$(this).data('photo-index',$(this).index());
});
发布于 2011-08-20 03:05:17
jQuery each()将用列表中当前迭代的索引填充第一个参数,因此将为settings.thumbnail$的每个元素分配一个惟一的n
给$(this).data('photo-index', n)
发布于 2011-08-20 03:06:43
在您的函数中,this
关键字引用您正在迭代的单个元素。n
将成为索引。因此,如果您有3个img
元素,该函数将被调用3次,n
从0到2,并且每个当前元素都绑定到this
。您还可以通过函数的第二个参数访问该元素:function(n, element) { $(element).data("photo-index", n); }
文档是here。
https://stackoverflow.com/questions/7126171
复制相似问题