插件默认值不会在jquery中重写

时间:2014-06-30 07:16:44

标签: jquery plugins

我有以下代码:

$.fn.newActivity = function(ops) {
    var defaults = {
        name: "activityNew",
        actionBar: "true"
    };
    var ops = $.extend( {}, defaults, ops);
    var newElem= $("<div>");
            newElem.addClass(defaults.name);
    return this.append(newElem);
};

现在当我像这样调用插件时:

$("body").newActivity({
    name: "menu",
    actionBar: "false"
});

我在调用插件时设置的新选项不会覆盖默认选项。请问我的代码有什么问题。我搜索了Google,仍然无法在我的代码中找到错误。

更多信息 当我运行代码时,我希望将div元素附加到body并具有menu类。

1 个答案:

答案 0 :(得分:0)

这是因为您使用的是default对象var而不是ops,请尝试使用ops。

ops将包含使用插件代码中提供的默认值扩展的传递选项。

代码:

$.fn.newActivity = function(ops) {
    var defaults = {
        name: "activityNew",
        actionBar: "true"
    };
    var ops = $.extend( {}, defaults, ops);
    var newElem= $("<div>");
            newElem.addClass(ops.name);
    return this.append(newElem);
};

$("body").newActivity({
    name: "menu",
    actionBar: "false"
});

演示:http://jsfiddle.net/4hn3Q/