Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 13.02.2009, 16:52
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

Контекст выполнения хэндлера события
Пишу под jQuery второй день в жизни, поэтому вопрос может быть идиотским.

Есть некий обьект, (назовем его myObj) в котором я реализовал нужную мне функциональность. Один из его методов (назовем его myFunc) вызывается в качестве обработчика события.
И, поскольку этот метод опирается на другие методы этого обьекта, он должен вызываться как метод обьекта. То есть внутри него this должен ссылаться не на ноду, а на myObj.

Приходится делать так:
this.form.bind('submit', {that: this}, function(evt) {
	that = evt.data.that
	evt.preventDefault();
	that.myFunc.apply(that, [that.inputs])
})

Но это кажется мне несколько неизящным.

Либо на jQuery пишут не так (а как тогда на нем пишут масштабные приложения?), либо я что-то упустил в документации.

Последний раз редактировалось hogart, 13.02.2009 в 18:30. Причина: ошибка в названии темы
Ответить с цитированием
  #2 (permalink)  
Старый 13.02.2009, 22:36
Отправить личное сообщение для Андрей Параничев Посмотреть профиль Найти все сообщения от Андрей Параничев
 
Регистрация: 21.02.2008
Сообщений: 1,250

hogart,
that.myFunc.apply(that, [that.inputs])

that.myFunc(that.inputs)

Это абсолютно одно и тоже.

Если вы хотите поставить в качестве обработчика метод myFunc объекта myObj, то вам в любом случае (не важно, jQuery, или native JS) придется обернуть его в замыкание.
Ответить с цитированием
  #3 (permalink)  
Старый 13.02.2009, 23:56
Профессор
Отправить личное сообщение для hogart Посмотреть профиль Найти все сообщения от hogart
 
Регистрация: 18.04.2008
Сообщений: 152

Сообщение от Андрей Параничев Посмотреть сообщение
Это абсолютно одно и тоже.
Не уверен. myFunc обрабатывает только первый аргумент, каковой ожидается быть массивом jQuery обьектов.
(Мда, фигня какая-то. Переделаю.)

Сообщение от Андрей Параничев Посмотреть сообщение
Если вы хотите поставить в качестве обработчика метод myFunc объекта myObj, то вам в любом случае (не важно, jQuery, или native JS) придется обернуть его в замыкание.
Да. Просто есть фреймворки, которые позволяют это делать сразу при навешивании обработчика. До этого я работал с таким.
Ответить с цитированием
  #4 (permalink)  
Старый 14.02.2009, 21:55
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Сообщение от hogart
До этого я работал с таким.
Ну так задайте функциям метод а-ля bind/createDelegate. Там три строчки.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Явный вызов процедуры обработки события. supchik Общие вопросы Javascript 18 27.01.2009 13:16
разное время выполнения операции ropowek Events/DOM/Window 2 08.10.2008 13:27