Передача параметров внутри плагина
Добрый день, пишу первый раз. Занимаюсь самоизучением jquery, на данный момент на плагинах. Дабы не разглагольствовать без темы, привожу код, вопросы содержатся в комментариях кода:
(function( $ ){ var methods = { init : function(options){ return $(this).each(function(){ $(this).data('menuTool', { target: $(this), active: false, }); }); //... $(this).bind("click.menuTool", methods.slide); $(this).find(".firstMenuLevel").bind("click.menuTool", methods.open); }, slide : function(event, /* Еще значение */){ // Как получить переданное значение, например // $("#block").menuTool('slide', ЗНАЧЕНИЕ) // Не теряя event и не используя глобальных переменных _data = $(this).data('menuTool'); if(!_data){ _data = { active: false, } } if((_data.active && $(event.target).hasClass("menuToolClose")) || command === 'close'){ //... } else { //... } }, hide : function(){ //... }, open : function(){ // Как можно получить здесь переменные из init не выводя их из замыкания // На данный момент мне кажется это невозможным // Т.к. this - тут уже другой объект, отличный от this в init }, } $.fn.menuTool = function(method){ if(methods[method]){ return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); } else if (typeof method === 'object' || !method){ return methods.init.apply(this, arguments); } else { $.error("Метод " + method + " не существует для jQuery.menuTool"); } }; })(jQuery); Заранее спасибо за помощь... |
|
dd_smol, Доброй ночи. Прочитал обе статьи. Немного запутался. Про this и метод bind пишут что this не меняется, но у меня вызывается на объекте, и this меняется. Данную статью я понял как невозможность получения нужного this? Во второй статье написано про аргументы, попробовал воспользоваться ими, но event всегда перезатирается и принимает значение передаваемых параметров. Сможете более подробно объяснить как пользоваться данными возможностями? Буду признателен если подкинете статьи про api JavaScript где описывается сходный функционал. Пока что из плагинов пишу мелкие - меню, окна, отрисовка графиков и т.п.
|
Rise, Читал и эту статью, перед тем, как встретить статью на хабре, на первый взгляд это похоже на два разных подхода к реализации плагина, если я не прав - поправтье, а если прав, то у меня вопрос, какие у каждого способа достоинства и недостатки?
|
Rise, Хабр
|
Rise, я как бы все понимаю, я просил помощи, мне помогают, но за ссылки - это уже чистый стеб, я как бы написал что читал, и сходств не нашел, а значит прочитал все. Границы тоже видеть надо, и не ставить себя выше других до такой степени.
|
Rise, я написал свое мнение, по моему мнению это два разных подхола к решению задачи, так как для меня эти решения абсолютно разные, и, если ты не заметил, первым сообщением я попросил поправить если ошибся, а не стебать по поводу ссылок.
|
|
Часовой пояс GMT +3, время: 15:37. |