плагин, создание, 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, время: 15:34. |