Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/393.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 - Fatal编程技术网

Javascript 扩展jQuery插件,而不必触及原始插件代码

Javascript 扩展jQuery插件,而不必触及原始插件代码,javascript,jquery,Javascript,Jquery,现在我正在使用我为jquery找到的一个很棒的cookie处理程序。唯一的问题是,它只能按天设置cookies。我希望能够绕过它,在某些情况下,将它们设置为秒/小时,甚至可以设置为特定的时间 看看这个插件,我知道我可以在哪里对它进行修改。但是我想知道是否有一种方法可以用我自己的自定义代码扩展插件,这样当我像普通一样调用插件时,我就可以使用我设置的参数了。整个想法是避免侵入初始脚本,因此如果作者及时发布新版本,我可以相应地进行更新,并且不会丢失升级过程中可能忘记的任何更改 在当前的插件行44-47

现在我正在使用我为jquery找到的一个很棒的cookie处理程序。唯一的问题是,它只能按天设置cookies。我希望能够绕过它,在某些情况下,将它们设置为秒/小时,甚至可以设置为特定的时间

看看这个插件,我知道我可以在哪里对它进行修改。但是我想知道是否有一种方法可以用我自己的自定义代码扩展插件,这样当我像普通一样调用插件时,我就可以使用我设置的参数了。整个想法是避免侵入初始脚本,因此如果作者及时发布新版本,我可以相应地进行更新,并且不会丢失升级过程中可能忘记的任何更改

在当前的插件行44-47中有

if (typeof options.expires === 'number') {
                var days = options.expires, t = options.expires = new Date();
                t.setDate(t.getDate() + days);
            }

我知道我可以直接侵入,想干什么就干什么。但是这个想法还是通过一些外部手段来实现的,总体上使用相同的脚本,我认为这个假设是不正确的

你可以用

$.cookie('my-key', 'my-valye', {
    expires: new Date()
})


您可以将所需的秒数除以86400。因此,在30秒内使用:

$.cookie('the_cookie', 'the_value', { expires: 30/86400, path: '/' });

正如其他人所建议的,我认为该插件已经支持您想要添加的功能。 但是我要回答你的问题
>我想知道有没有办法用我自己的自定义代码扩展插件

该插件将
$.cookie
设置为具有三个参数的函数(
函数(键、值、选项)
)。您可以通过以下方式进行扩展:

// in a js file after including `jquery.cookies.js`
(function () {
    var cookie = $.cookie;
    $.cookie = function (key, value, options) {
        // TODO: add your code here

        $.cookie = cookie;
        var out = $.cookie(key, value, options);
        $.cookie = this;
        return out;
    }
}());

当前cookie脚本将获取给定的数字并将其转换为天+即:
t.setDate(t.getDate()+days
,因此这将无法正常工作,因此希望在不侵入tiyes的情况下对其进行扩展。我已经看到了代码。例如,使用更大的数字,600秒是否会=0.00694444天?
// in a js file after including `jquery.cookies.js`
(function () {
    var cookie = $.cookie;
    $.cookie = function (key, value, options) {
        // TODO: add your code here

        $.cookie = cookie;
        var out = $.cookie(key, value, options);
        $.cookie = this;
        return out;
    }
}());