Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 17.01.2012, 11:45
Интересующийся
Отправить личное сообщение для oke11o Посмотреть профиль Найти все сообщения от oke11o
 
Регистрация: 02.09.2011
Сообщений: 22

Как вызвать callback функцию
Здравствуйте.
Пишу плагин для jQuery. Новые методы пишу в $.fn.extend({...});
В один из таких методов в качестве параметра передаю название следующей функции.
Как вызвать такую функцию, название которой передал в параметре функции?
$obj.validateDate(saveStartDate);

    $.fn.extend({
		validateDate: function (сallBack) {
						  this.сallBack();
					  },
		saveStartDate: function () {
						  console.log('saveStartDate');
					   },
	});	//end $.fn.extend
Ответить с цитированием
  #2 (permalink)  
Старый 17.01.2012, 12:24
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

this[сallBack]()
не?
__________________
.
Ответить с цитированием
  #3 (permalink)  
Старый 17.01.2012, 12:31
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Передавать надо не имя функции, а саму функцию, и контекст, в котором нужно вызвать эту функцию.
Ответить с цитированием
  #4 (permalink)  
Старый 17.01.2012, 12:34
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Kolyaj,
А почему бы и нет, получается своеобразный switch.
__________________
.
Ответить с цитированием
  #5 (permalink)  
Старый 17.01.2012, 12:38
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Где тут switch?
Ответить с цитированием
  #6 (permalink)  
Старый 17.01.2012, 12:45
Интересующийся
Отправить личное сообщение для oke11o Посмотреть профиль Найти все сообщения от oke11o
 
Регистрация: 02.09.2011
Сообщений: 22

Сообщение от Skipp Посмотреть сообщение
this[сallBack]()
Да, спасибо, работает!

Сообщение от Kolyaj Посмотреть сообщение
Передавать надо не имя функции, а саму функцию, и контекст, в котором нужно вызвать эту функцию.
Я так и пытался сделать, но не получается. В приведенном мной примере передается не строка, а функция. Но не знаю, как ее выполнить. То есть как указать контекст? Если подскажите как, буду очень благодарен.
Ответить с цитированием
  #7 (permalink)  
Старый 17.01.2012, 12:48
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

А в чём именно проблема?
Пример:
function e(func){
	func();
}

e(function(){alert(1)});
__________________
.
Ответить с цитированием
  #8 (permalink)  
Старый 17.01.2012, 13:08
Интересующийся
Отправить личное сообщение для oke11o Посмотреть профиль Найти все сообщения от oke11o
 
Регистрация: 02.09.2011
Сообщений: 22


Сейчас работает. Хм. Где-то ошибся, потому как не работало до этого.
Спасибо.
Ответить с цитированием
  #9 (permalink)  
Старый 17.01.2012, 13:11
Аватар для Skipp
.
Отправить личное сообщение для Skipp Посмотреть профиль Найти все сообщения от Skipp
 
Регистрация: 30.03.2010
Сообщений: 1,813

Kolyaj,
Разьве совсем не похоже?
var pswitch = function(){
	this.e = function(){
		var args = Array.prototype.slice.call(arguments);
		this[args.shift()].apply(this, args);
		return this;
	}
	this.func1 = function(){alert(1)};
	this.func2 = function(){alert(2)};
	this.func3 = function(t){alert(t);};
};

var i = new pswitch();
i.e('func1').e('func2').e('func3', 3);
__________________
.
Ответить с цитированием
  #10 (permalink)  
Старый 17.01.2012, 13:14
Новичок на форуме
Отправить личное сообщение для Kolyaj Посмотреть профиль Найти все сообщения от Kolyaj
 
Регистрация: 19.02.2008
Сообщений: 9,177

Нет, не похоже. Замена switch объектом -- известный паттерн. Непонятно, зачем он здесь нужен.
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как получить ссылку на функцию Magneto Общие вопросы Javascript 4 03.09.2011 15:53
Как вытащить функцию из input'a mosk Элементы интерфейса 4 20.05.2010 18:09
как вызвать функцию? pumpurumer jQuery 2 27.08.2009 19:39
js файл(незнаю как запустить функцию) Temchik Opera, Safari и др. 6 20.07.2009 11:49
Нужно вызвать функцию из другого окна Destiny Общие вопросы Javascript 6 07.05.2008 01:32