Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/68.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
预加载程序div不会再次淡出-jQuery_Jquery_Html_Fadeout_Preloader - Fatal编程技术网

预加载程序div不会再次淡出-jQuery

预加载程序div不会再次淡出-jQuery,jquery,html,fadeout,preloader,Jquery,Html,Fadeout,Preloader,我在一个简单的html页面上有一个预加载div。加载页面时,它会淡出。 当我重新加载图像时,它不会再次消失,我如何“重置”预加载程序 HTML jQuery: $(function () { function loader(){ $("#preloader").css({'display':'block'}); $(window).load(function() { $("#preloader").fadeOut(); }

我在一个简单的html页面上有一个预加载div。加载页面时,它会淡出。 当我重新加载图像时,它不会再次消失,我如何“重置”预加载程序

HTML

jQuery:

$(function () {

function loader(){ 
    $("#preloader").css({'display':'block'});               
    $(window).load(function() {
        $("#preloader").fadeOut();
    });
}; //loader

loader();

/* I reload the images on click (image names are 1, 2, 3, 4, 5, 6....) */

$('#reload').click(function(){      
            loader(); /// <<< preloader div not fades out again

            // change images
            i1 += 3;                    
            i2 += 3;                    
            i3 += 3;                    
            $('#k1').css({'background':'url("images/' + i1 + '.jpg")'});
            $('#k2').css({'background':'url("images/' + i2 + '.jpg")'});
            $('#k3').css({'background':'url("images/' + i3 + '.jpg")'});
    });

});

无法测试这一点,因为您没有包含足够的代码,但我猜当您按下重新加载按钮时,这只会影响包含图像的div

此函数还调用加载程序函数,该函数告诉预加载程序设置为block,然后调用隐藏它$window.loadfunction{};无法运行,因为您的页面已加载

更新

我不确定您是否可以对div运行.load检查,因为按下按钮时您只是将图像插入其中,了解jquery更多的人可以为您回答这个问题。但我在下面所做的只是直接调用预加载上的display,然后向它添加一个已加载的类。if语句只是检查它是否有这个类,如果有,它会再次淡出这个类

$('#reload').click(function(){      
    $("#preloader").css({'display':'block'});
    $("#preloader").addClass( "loaded" );

    $('#k1').css({'background':'url("http://placehold.it/300")'});

    if ($("#preloader").hasClass( "loaded" ) ) {
           $("#preloader").fadeOut();
    }
});
更新2

我很好奇,看看什么是可以调用的。加载,它可以在和上完成
是的,当您按下按钮时,它会为列表项背景加载新图像。如何为.load函数选择这些图像?使用一些可能适合您的jquery更新了答案,就像我在其中所说的,不确定您是否可以检查是否加载了div。谢谢您考虑了我的问题!我认为正确的方法应该是在重新加载图像时使用一些ajax调用,这样我就可以为传入的数据或类似的东西制作一个预加载程序。我是这方面的初学者,但我会考虑的。再次非常感谢!我自己还在学习jquery的细节,很想看看用.load可以做些什么。似乎可以用.load检查img标记。所以如果证明有帮助,上面做了一个小的更新。
$('#reload').click(function(){      
    $("#preloader").css({'display':'block'});
    $("#preloader").addClass( "loaded" );

    $('#k1').css({'background':'url("http://placehold.it/300")'});

    if ($("#preloader").hasClass( "loaded" ) ) {
           $("#preloader").fadeOut();
    }
});
$('#reload').click(function(){      
    $("#preloader").css({'display':'block'});

    $('#mainImg').attr('src', 'http://placehold.it/300');     

    $('#mainImg').load(function(){
        $("#preloader").fadeOut();
    });

});