延迟执行jquery错误函数

时间:2011-11-28 10:32:49

标签: javascript jquery

我使用下面的错误功能隐藏似乎没有加载的外部图像。 但是图像很容易隐藏,我认为这是因为函数执行速度很快。 Jquery有没有办法将函数延迟两秒?

$(".display li img").error(function () {
    $(this).parent().parent().hide("fast");
    pos3 = $(this).attr("id"); 
    reportrefcam();
});

4 个答案:

答案 0 :(得分:2)

我可能会从另一边做。等待页面load事件,然后检查所有图像。检查意味着,查看图片是否有widthheight,如果不是最有可能的话。

$( window ).on('load', function() {
    $( '.display li img' ).each(function() {
        if( (!this.width || !this.height) ) {
            pos3 = $( this ).attr( 'id' ); 
            reportrefcam();

            $( this ).hide( 'fast' );
        }
    });
});

演示http://jsfiddle.net/vLC7U/

当您加载整个图像+ iframe时,窗口load事件最终会触发。因此,如果图像在此时没有尺寸,那么这是一个保存的赌注。它可以打破。

答案 1 :(得分:1)

使用setTimeout方法

$(".display li img").error(function () {
    var self = $(this);
    setTimout(function(){
        self.parent().parent().hide("fast");
        pos3 = self.attr("id"); 
        reportrefcam();
    }, 2000);
});

答案 2 :(得分:0)

您可以使用delay()来延迟执行jQuery函数,或者只需使用setTimeout()。目前尚不清楚你需要延迟什么,所以我不知道什么是最好的方法

答案 3 :(得分:0)

一般java脚本:

setTimeout("delayedFunctionName()",1000);

这里“delayedFunctionName()”是要调用的函数,“1000”是时间延迟,以毫秒为单位。