02.12.2016, 23:27
|
Новичок на форуме
|
|
Регистрация: 02.12.2016
Сообщений: 6
|
|
Передача параметров внутри плагина
Добрый день, пишу первый раз. Занимаюсь самоизучением 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);
Заранее спасибо за помощь...
|
|
02.12.2016, 23:47
|
|
Кандидат Javascript-наук
|
|
Регистрация: 08.03.2015
Сообщений: 131
|
|
По первому вопросу: arguments
По второму вопросу: в частности про this
Если хотите делать что то больше чем покрасить ссылку в другой цвет учите не только api jQuery но и api самого javascript.
|
|
03.12.2016, 00:08
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
|
|
03.12.2016, 00:46
|
Новичок на форуме
|
|
Регистрация: 02.12.2016
Сообщений: 6
|
|
dd_smol, Доброй ночи. Прочитал обе статьи. Немного запутался. Про this и метод bind пишут что this не меняется, но у меня вызывается на объекте, и this меняется. Данную статью я понял как невозможность получения нужного this? Во второй статье написано про аргументы, попробовал воспользоваться ими, но event всегда перезатирается и принимает значение передаваемых параметров. Сможете более подробно объяснить как пользоваться данными возможностями? Буду признателен если подкинете статьи про api JavaScript где описывается сходный функционал. Пока что из плагинов пишу мелкие - меню, окна, отрисовка графиков и т.п.
Последний раз редактировалось DomEdI, 03.12.2016 в 00:49.
|
|
03.12.2016, 00:48
|
Новичок на форуме
|
|
Регистрация: 02.12.2016
Сообщений: 6
|
|
Rise, Читал и эту статью, перед тем, как встретить статью на хабре, на первый взгляд это похоже на два разных подхода к реализации плагина, если я не прав - поправтье, а если прав, то у меня вопрос, какие у каждого способа достоинства и недостатки?
|
|
03.12.2016, 00:56
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
DomEdI, что за статья на хабре?
|
|
03.12.2016, 00:57
|
Новичок на форуме
|
|
Регистрация: 02.12.2016
Сообщений: 6
|
|
|
|
03.12.2016, 01:26
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
DomEdI, Advanced Plugin следующая статья там же, это серия статей Plugins как бы, учись пользоваться ссылками навигации.
|
|
03.12.2016, 01:39
|
Новичок на форуме
|
|
Регистрация: 02.12.2016
Сообщений: 6
|
|
Rise, я как бы все понимаю, я просил помощи, мне помогают, но за ссылки - это уже чистый стеб, я как бы написал что читал, и сходств не нашел, а значит прочитал все. Границы тоже видеть надо, и не ставить себя выше других до такой степени.
|
|
03.12.2016, 02:00
|
Профессор
|
|
Регистрация: 07.11.2013
Сообщений: 4,662
|
|
DomEdI, покажи тогда где увидел различия.
|
|
|
|