плагин, создание, jQuery
Доброго всем!
Создаю плагин на jQuery и столкнулся с проблемой при создании
$.myPlug = function(opts) {
var o = $.extend({
default1 : false,
default2 : true
}, opts);
console.log(default1+"|"+default2);
}
потом запускаю...
$.muPlug({default1 : true, default2 : false});
$.muPlug({default1 : false, default2 : true});
В логе почему-то указываются стандартные параметры и не меняются: false|true false|true Где я неправ? ps: Кстати выставляю: ... speed: 333, //скорость анимации ... А она меняется. |
Вероятно Вы неправы в своем представлении как работает extend.
Во-первых, насколько я понимаю, ваш код в сферическом вакууме отработать не должен, а должен ругнуться на строчку с консоль логом что default1 и default2 undefined - их присвоили где-то в другом месте, а вот эти постоянные false|true - это побочный эффект, приведенный код на них не влияет. По крайней мере когда я попытался создать фидл и посмотреть, произошло именно так) Во-вторых, extend согласно документации - это просто мержилка всех объектов которые передали, в тот объект, который передан первым параметром. Просто если параметр один, она считает это укороченной формой записи и мержит его в $. То есть чтобы записать в пространство $ результат мержа, а насколько я понял вы хотите этого, надо написать $.extend($,obj1,obj2); Впрочем я совсем не жукверист, могу ошибаться =) |
Makarov,
Вот мой вариант кода:
$.slide_ = function(o) { // и вот в чем странность...
var o = $.extend({
obj: '', // эти...
objBody: '', // данные...
objClick: '', // меняются
activeClick: false, // "этот" нет
objActive: true, // а это работает о_О
onOpen: function(){},
onClose: function() {},
speed: 300
}, o);
}
В общем похоже "activeClick" "загажен". |
| Часовой пояс GMT +3, время: 19:20. |