我想使用HTML
jQuery
中的所有图片来源
我有以下div:
<div id="image_list">
<a href="images/Image1.jpg" title="Image 1">
<img class="img" src="images/Image1.jpg" alt="Image 1">
</a>
<a href="images/Image2.gif" title="Image 2">
<img class="img" src="images/Image2.gif" alt="Image 2">
</a>
<a href="images/Image3.gif" title="Image 3">
<img class="img" src="images/Image3.gif" alt="Image 3">
</a>
<a href="images/Image4.gif" title="Image 4">
<img class="img" src="images/Image4.gif" alt="Image 4">
</a>
<a href="images/Image5.gif" title="Image 5">
<img class="img" src="images/Image5.gif" alt="Image 5">
</a>
</div>
我有这个jQuery函数来在文档加载后2秒内更改div中的所有图像:
setTimeout(function () {
for (var i = 0; i < links.length; i++) {
alert("DFDF");
$(this).find("img").attr('src', 'images/back.jpg');
}
}, 2000);
links是a
代码links = $listNode.find('a'),
且$listNode
为$listNode = $('#image_list')
该功能提醒DFDF
不要更改图像源。
我的代码中存在什么问题。
谢谢。
答案 0 :(得分:3)
for
没有设置this
,因此$(this)
引用全局window
对象,而不是迭代的当前元素。使用.each
:
links.each(function() {
alert("DFDF");
$(this).find("img").attr('src', 'images/back.jpg');
});
但是你根本不需要迭代,因为jQuery修饰符函数将对集合进行操作:
links.find("img").attr('src', 'images/back.jpg');
答案 1 :(得分:1)
你不需要迭代每个元素,jquery会为你做这个:
setTimeout(function () {
$('#image_list img').attr('src', 'images/back.jpg');
}, 2000);
顺便说一句,我怀疑this
表示您认为在上面的代码中意味着什么。
答案 2 :(得分:1)
使用IIFE(立即调用的函数表达式)如下所示,在页面加载后每2秒更改一次图像的src:
$(function() {
$('#image_list .img').each(function(i,img) {
var tm = i * 2000;
(function( time, image ) {
setTimeout(function() {
$(image).attr('src', 'images/back.jpg');
}, time );
})( tm, img );
});
});
$(function() {
var imgsrc = 'http://aspnethosting2go.com/wp-content/uploads/2014/07/feature1.png';
$('#image_list .img').each(function(i,img) {
var tm = i * 2000;
(function( time, img ) {
setTimeout(function() {
$(img).attr('src', imgsrc).css('width', '100px');
}, time );
})( tm, img );
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="image_list">
<a href="images/Image1.jpg" title="Image 1">
<img class="img" src="images/Image1.jpg" alt="Image 1">
</a>
<a href="images/Image2.gif" title="Image 2">
<img class="img" src="images/Image2.gif" alt="Image 2">
</a>
<a href="images/Image3.gif" title="Image 3">
<img class="img" src="images/Image3.gif" alt="Image 3">
</a>
<a href="images/Image4.gif" title="Image 4">
<img class="img" src="images/Image4.gif" alt="Image 4">
</a>
<a href="images/Image5.gif" title="Image 5">
<img class="img" src="images/Image5.gif" alt="Image 5">
</a>
</div>
&#13;
但是,如果你想要的只是同时更改所有图像,在页面加载后2秒使用它:
$(function() {
setTimeout(function() {
$('#image_list .img').attr('src', 'images/back.jpg');
}, 2000);
});
$(function() {
var imgsrc = 'http://aspnethosting2go.com/wp-content/uploads/2014/07/feature1.png';
setTimeout(function() {
$('#image_list .img').attr('src', imgsrc).css('width','100px');
}, 2000);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="image_list">
<a href="images/Image1.jpg" title="Image 1">
<img class="img" src="images/Image1.jpg" alt="Image 1">
</a>
<a href="images/Image2.gif" title="Image 2">
<img class="img" src="images/Image2.gif" alt="Image 2">
</a>
<a href="images/Image3.gif" title="Image 3">
<img class="img" src="images/Image3.gif" alt="Image 3">
</a>
<a href="images/Image4.gif" title="Image 4">
<img class="img" src="images/Image4.gif" alt="Image 4">
</a>
<a href="images/Image5.gif" title="Image 5">
<img class="img" src="images/Image5.gif" alt="Image 5">
</a>
</div>
&#13;
答案 3 :(得分:0)
您可以选择img
内的所有image_list
标记,如下所示:
$("#image_list img")
只需对其进行扩展即可更改所有选定元素的src
属性,如下所示:
$('#image_list img').attr('src', 'images/back.jpg')
答案 4 :(得分:-2)
使用选择器,您不需要迭代。
setTimeout(function(){
$("#image_list img").attr("src","images/back.jpg");
},2000);