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

时间:2016-09-30 13:59:11

标签: 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.delay;
        $(window).load(function() {
            $('.preloadback').delay(d).slideUp(300);
        });
    });
}

并使用$('.preloadback').prelodr();我使用此功能。 现在,我在多个页面上有这个加载器,所以我将这个代码移动到js文件并将其包含在项目中。它没有问题。

问题: 我想使用

提供延迟选项
$('.preloadback').prelodr({delay:5000,});

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

1 个答案:

答案 0 :(得分:0)

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

$.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);
        });
    });
}