Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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 使用初始调用创建jQuery插件,并覆盖默认值_Javascript_Jquery_Html_Dom - Fatal编程技术网

Javascript 使用初始调用创建jQuery插件,并覆盖默认值

Javascript 使用初始调用创建jQuery插件,并覆盖默认值,javascript,jquery,html,dom,Javascript,Jquery,Html,Dom,基本上,我想创建一个jquery插件,在页面加载时显示加载动画。为它创建jquery是很容易的一部分 你可以在这里看到: $.fn.prelodr = function(options) { var settings = $.extend({ delay: 1000, }, options); return this.each(function() { var $elm = $(this) , d = settings.

基本上,我想创建一个jquery插件,在页面加载时显示加载动画。为它创建jquery是很容易的一部分

你可以在这里看到:

$.fn.prelodr = function(options) {
    var settings = $.extend({
        delay: 1000,
    }, options);
    return this.each(function() {
        var $elm = $(this)
          , d = settings.delay;
        $(window).load(function() {
            $('.preloadback').delay(d).slideUp(300);
        });
    });
}
并使用
$('.prelodback').prelodr()我使用这个函数。
现在,我在多个页面上都有这个加载程序,所以我将代码移动到js文件中,并将其包含在项目中。它毫无问题地工作

问题: 我想提供延迟选项使用

$('.preloadback').prelodr({delay:5000,});

我从文档页脚使用此函数调用。问题是它被呼叫了两次。如何在js文件中保留初始函数调用并覆盖页面中的默认选项?

如果您的自定义延迟调用首先发生,您可以在该元素上设置一个标志,以便在第二次调用时忽略它

$.fn.prelodr = function(options) {
    var settings = $.extend({
        delay: 1000,
    }, options);
    return this.each(function() {
        var $elm = $(this)
          , d = settings.delay;

        if($elm.data('prelodr-loaded')) { return; }
        else { $elm.data('prelodr-loaded', true); }

        $(window).load(function() {
            $('.preloadback').delay(d).slideUp(300);
        });
    });
}

如果具有自定义延迟的调用首先发生,则可以在该元素上设置一个标志,以便在第二次调用时忽略它

$.fn.prelodr = function(options) {
    var settings = $.extend({
        delay: 1000,
    }, options);
    return this.each(function() {
        var $elm = $(this)
          , d = settings.delay;

        if($elm.data('prelodr-loaded')) { return; }
        else { $elm.data('prelodr-loaded', true); }

        $(window).load(function() {
            $('.preloadback').delay(d).slideUp(300);
        });
    });
}