你在这段代码中给出了一个问题,它给了我$(this).fadeIn()不是函数,有什么想法吗?
$('img').hide().each(function(){
$(this).load(function(){
$(this).fadeIn();
});
});
答案 0 :(得分:3)
如果你的意思是修复内部函数中的外部$(this),你可以这样做:
$('img').hide().each(function(){
var outer = $(this);
outer.load(function(){
outer.fadeIn();
});
});
答案 1 :(得分:3)
this
的值在嵌套函数内部发生变化 - 其值不像其他变量那样被“捕获”。
为避免这种情况,您可以将this
分配给另一个变量!
$('img').hide().each(function(){
var that = $(this);
that.load(function(){
that.fadeIn();
});
});
答案 2 :(得分:0)
您的代码是正确的。不确定问题是什么。在.load()
事件处理程序中,this
引用了接收事件的元素,因此没有理由在外部this
附近关闭。
如果你在.each()
中没有做任何其他事情,你可以摆脱它:
示例: http://jsfiddle.net/patrick_dw/b4cNZ/1/
$('img').hide().load(function() {
$(this).fadeIn(2000);
});
否则,如果您需要进行测试以确保在缓存时图像被显示,您可以这样做:
示例: http://jsfiddle.net/patrick_dw/b4cNZ/2/
$('img').hide().each(function() {
if (this.complete) {
$(this).fadeIn(2000);
} else {
$(this).load(function() {
$(this).fadeIn(2000);
});
}
});