Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.12.2016, 23:27
Новичок на форуме
Отправить личное сообщение для DomEdI Посмотреть профиль Найти все сообщения от DomEdI
 
Регистрация: 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);

Заранее спасибо за помощь...
Ответить с цитированием
  #2 (permalink)  
Старый 02.12.2016, 23:47
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

По первому вопросу: arguments
По второму вопросу: в частности про this

Если хотите делать что то больше чем покрасить ссылку в другой цвет учите не только api jQuery но и api самого javascript.
Ответить с цитированием
  #3 (permalink)  
Старый 03.12.2016, 00:46
Новичок на форуме
Отправить личное сообщение для DomEdI Посмотреть профиль Найти все сообщения от DomEdI
 
Регистрация: 02.12.2016
Сообщений: 6

dd_smol, Доброй ночи. Прочитал обе статьи. Немного запутался. Про this и метод bind пишут что this не меняется, но у меня вызывается на объекте, и this меняется. Данную статью я понял как невозможность получения нужного this? Во второй статье написано про аргументы, попробовал воспользоваться ими, но event всегда перезатирается и принимает значение передаваемых параметров. Сможете более подробно объяснить как пользоваться данными возможностями? Буду признателен если подкинете статьи про api JavaScript где описывается сходный функционал. Пока что из плагинов пишу мелкие - меню, окна, отрисовка графиков и т.п.

Последний раз редактировалось DomEdI, 03.12.2016 в 00:49.
Ответить с цитированием
  #4 (permalink)  
Старый 03.12.2016, 00:48
Новичок на форуме
Отправить личное сообщение для DomEdI Посмотреть профиль Найти все сообщения от DomEdI
 
Регистрация: 02.12.2016
Сообщений: 6

Rise, Читал и эту статью, перед тем, как встретить статью на хабре, на первый взгляд это похоже на два разных подхода к реализации плагина, если я не прав - поправтье, а если прав, то у меня вопрос, какие у каждого способа достоинства и недостатки?
Ответить с цитированием
  #5 (permalink)  
Старый 03.12.2016, 00:57
Новичок на форуме
Отправить личное сообщение для DomEdI Посмотреть профиль Найти все сообщения от DomEdI
 
Регистрация: 02.12.2016
Сообщений: 6

Rise, Хабр
Ответить с цитированием
  #6 (permalink)  
Старый 03.12.2016, 01:39
Новичок на форуме
Отправить личное сообщение для DomEdI Посмотреть профиль Найти все сообщения от DomEdI
 
Регистрация: 02.12.2016
Сообщений: 6

Rise, я как бы все понимаю, я просил помощи, мне помогают, но за ссылки - это уже чистый стеб, я как бы написал что читал, и сходств не нашел, а значит прочитал все. Границы тоже видеть надо, и не ставить себя выше других до такой степени.
Ответить с цитированием
  #7 (permalink)  
Старый 03.12.2016, 02:13
Новичок на форуме
Отправить личное сообщение для DomEdI Посмотреть профиль Найти все сообщения от DomEdI
 
Регистрация: 02.12.2016
Сообщений: 6

Rise, я написал свое мнение, по моему мнению это два разных подхола к решению задачи, так как для меня эти решения абсолютно разные, и, если ты не заметил, первым сообщением я попросил поправить если ошибся, а не стебать по поводу ссылок.
Ответить с цитированием
  #8 (permalink)  
Старый 03.12.2016, 09:18
Аватар для dd_smol
Кандидат Javascript-наук
Отправить личное сообщение для dd_smol Посмотреть профиль Найти все сообщения от dd_smol
 
Регистрация: 08.03.2015
Сообщений: 131

В вашем методе open в объекте methods, this будит ссылаться на сам объект methods. А в добавленном методе menuTool в jQuery this ссылается на объект jQuery. Метод bind в javascript отличается от метода bind в jQuery.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Передача значений нескольких параметров из js в php TomTykver AJAX и COMET 2 13.05.2015 22:19
setInterval внутри плагина giv13 Элементы интерфейса 16 16.10.2014 04:58
Вызов метода внутри метода при инициализации плагина SergXP jQuery 0 01.07.2013 22:27
Передача параметров сценарию обработки стореджа на сервере Allan Stark ExtJS 4 03.10.2012 14:46
Передача параметров внутрь <object type="text/html"> spamset Internet Explorer 0 23.03.2011 16:18