我有一个缩略图列表。当我点击缩略图时,我希望图像在半秒后加载。这是我的代码:
$('ul#thumbs li img').click(function() {
setTimeout(function() {
$('img#image').attr("src", $(this).attr("src").replace("_thumb", ""));
}, 500);
});
当我点击其中一个拇指时,没有任何反应。如果我删除了setTimeout函数,并且只是立即加载图像,它就可以正常工作。
有人知道为什么事件不会开火吗?
答案 0 :(得分:0)
this
不是您认为的那样。当您使用setTimeout
时,this
不再是函数执行时对当前元素的引用。
您需要确保跟踪正确的元素,如下所示:
$('ul#thumbs li img').click(function() {
var thumbImg = this;
setTimeout(function() {
$('img#image').attr("src", $(thumbImg).attr("src").replace("_thumb", ""));
}, 500);
});
答案 1 :(得分:0)
问题是超时功能中this
的范围试试这个:
$('ul#thumbs li img').click(function() {
var self = $(this);
setTimeout(function() {
$('img#image').attr("src", self.attr("src").replace("_thumb", ""));
}, 500);
});
甚至更好:
$('ul#thumbs li img').click(function() {
var src = $(this).attr("src").replace("_thumb", "");
setTimeout(function() {
$('img#image').attr("src", src);
}, 500);
});