значения по умолчанию для плагинов не переопределяются в jquery

#jquery #plugins

#jquery #Плагины

Вопрос:

У меня есть следующий код:

 $.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. Здесь все работает нормально: jsfiddle.net/4XKSt . Можете ли вы расширить проблему, с которой вы столкнулись?

2. Он работает правильно, на скрипке выше, в чем проблема?

Ответ №1:

Это потому, что вы используете default object var, а не the 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 /