Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript load();不总是用图像发射_Javascript_Jquery_Jquery Animate_Jquery Events - Fatal编程技术网

Javascript load();不总是用图像发射

Javascript load();不总是用图像发射,javascript,jquery,jquery-animate,jquery-events,Javascript,Jquery,Jquery Animate,Jquery Events,我有一个脚本,它在加载时会在图像中淡入淡出,以防止加载丑陋的动画,它使用$(elem.load()函数 我的问题是,有时页面上会出现一些尚未淡入的图像。这可能是因为加载事件尚未触发。我已经检查了控制台的错误,但是什么也找不到。。。这种情况并不总是发生,但偶尔也会发生 剧本: // Function to be applied to any element jQuery.fn.preFade = function( speed, callback ) { this.load(functio

我有一个脚本,它在加载时会在图像中淡入淡出,以防止加载丑陋的动画,它使用
$(elem.load()函数

我的问题是,有时页面上会出现一些尚未淡入的图像。这可能是因为加载事件尚未触发。我已经检查了控制台的错误,但是什么也找不到。。。这种情况并不总是发生,但偶尔也会发生

剧本:

// Function to be applied to any element
jQuery.fn.preFade = function( speed, callback ) {
    this.load(function(){
        $(this).fadeIn(speed, callback);
    });
};

// The .prefade class has display: none; applied to it in my CSS
$(document).ready(function(){
    $('.prefade').preFade(1000);
});
最让我感到困惑的是,尽管没有触发加载事件,但图像实际上已加载。我之所以知道这一点,是因为当我检查元素并将其更改为
display:block
显示:无显示图像


我隐约知道,在事件调用的顺序方面,我可能遗漏了一些东西…

我在注释中链接到了一个解决方案,这就是它如何适合我的代码

this.one('load', function(){
    $(this).fadeIn(speed, callback);
}).each(function(){
    if (this.complete) { $(this).load(); }
});
将简单的
$.load()
函数(使用
$.on('load')
)更改为
$。one('load')
函数将事件限制为仅触发一次
如果(this.complete)
则在事件绑定到元素之前检查它是否已加载,如果已加载,则会触发加载事件


我在评论中链接到了一个解决方案,这就是它如何适合我的代码

this.one('load', function(){
    $(this).fadeIn(speed, callback);
}).each(function(){
    if (this.complete) { $(this).load(); }
});
将简单的
$.load()
函数(使用
$.on('load')
)更改为
$。one('load')
函数将事件限制为仅触发一次
如果(this.complete)
则在事件绑定到元素之前检查它是否已加载,如果已加载,则会触发加载事件

使用$(窗口)。加载事件。这将仅在加载所有图像时触发

$(window).load(function(){
    $('.prefade').preFade(1000);
});
使用$(窗口)。加载事件。这将仅在加载所有图像时触发

$(window).load(function(){
    $('.prefade').preFade(1000);
});

我想这可能是我的解决方案,我会检查它是否工作出色,工作完美。谢谢,我想这可能是我的解决方案,我会检查它是否工作出色,工作完美。感谢您在文档加载后加载它们。感谢您在文档加载后加载它们。