请教jQuery中的each写法

$('img[data-src]').each(function(index, el) {
    $(this).attr({
        src: $(this).data('src')
    });
});

比如上面这段,能否不用each?目的是把img的src设置为data-src的值.

阅读 2.3k
3 个回答

你好,可以不用each
因为jquery具有隐式迭代

jQuery对象类似数组,它的每个元素都是一个引用了DOM节点的对象。
可以理解成每次选择器(这个对象)调用方法时,都会自动遍历选中的DOM数组

所以你可以通过attr方法直接修改选择器选中的所有图片的src属性

attr(name|properties|key,value|fn)
获取匹配的元素集合中的第一个元素的属性的值 或 设置每一个匹配元素的一个或多个属性。
$("button").click(function(){
  $('img[data-src]').attr('src', function(){return $(this).data('src')});
})

https://codepen.io/xuge/pen/J...

可以使用for循环,forEach map 。但是each是对循环的封装,最简单的循环。

其实 jQuery 的每一个操作都暗含了 each
所以理论上,可以不显式地调用 each来达到相同的效果:

$('img[data-src]').attr('src', function(){return $(this).data('src')});

实际上我也不知道行不行,题主自己试下就知道了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题