gpt4 book ai didi

Jquery 插件未将默认值与选项合并

转载 作者:行者123 更新时间:2023-12-01 00:48:32 24 4
gpt4 key购买 nike

我创建了自己的 jquery 插件。就这样设置了。

;(function ($)
{
$.fn.bpeditor = function (options)
{
return this.each(function()
{
// Merge passed options with defaults
vars.options = $.extend({}, $.fn.bpeditor.defaults, options);

alert(vars.options.test);
}
}

var vars =
{
options: null
};

$.bpeditor.defaults =
{
user: 'a',
dkey: 'b',
side: 'c',
test: 'd'
};

})(jQuery);

我这样调用它:

$('div#canvas').bpeditor
({
user: 'user1',
dkey: 'dkey1'
});

如您所见,我传递了“user”和“dkey”选项,但没有传递“test”。测试有一个默认值,并且未在插件中设置。插件中的警报应显示 vars.options.test 的内容,该内容应填充 $.bpeditor.defaults 的内容,但它返回为未定义。

有人可以帮忙吗?

谢谢

最佳答案

您忘记了.fn。

$.fn.bpeditor.defaults = {
...
};

注意:公开默认选项以便可以在插件外部修改它们是不常见的。

对于它们来说,更常见的是只有插件可以访问的词法作用域变量。也无需在 .each 循环内重新创建选项变量 - 所有这些受影响的元素都应共享相同的选项状态:

(function($) {

// only created once, shared between all instances
var defaults = {
...
};

$.fn.bpeditor = function (options) {
options = $.extend(true, {}, defaults, options);
return this.each(function() {
alert(vars.options.test);
});
};
})(jQuery);

$.extend() 行深度复制默认值,然后将提供的选项复制到一个新的空对象中,重新使用 options 变量 - 确保 defaults 对象保持不变,并且传递的对象不会被修改。

关于Jquery 插件未将默认值与选项合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13991197/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com