Как вызвать callback функцию
Здравствуйте.
Пишу плагин для jQuery. Новые методы пишу в $.fn.extend({...}); В один из таких методов в качестве параметра передаю название следующей функции. Как вызвать такую функцию, название которой передал в параметре функции? $obj.validateDate(saveStartDate); $.fn.extend({ validateDate: function (сallBack) { this.сallBack(); }, saveStartDate: function () { console.log('saveStartDate'); }, }); //end $.fn.extend |
this[сallBack]()не? |
Передавать надо не имя функции, а саму функцию, и контекст, в котором нужно вызвать эту функцию.
|
Kolyaj,
А почему бы и нет, получается своеобразный switch. |
Где тут switch?
|
Цитата:
Цитата:
|
А в чём именно проблема?
Пример: function e(func){ func(); } e(function(){alert(1)}); |
:-?
Сейчас работает. Хм. Где-то ошибся, потому как не работало до этого. Спасибо. |
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); |
Нет, не похоже. Замена switch объектом -- известный паттерн. Непонятно, зачем он здесь нужен.
|
Всё ясно. На вкус и цвет...
Моё мнение, что они всё таки похожи, но спорить не буду. |
Главный вопрос не в том, похожи или не похожи, а зачем это нужно в данном случае.
|
Kolyaj,
Я про необходимость ничего и не писал, тем более это всё равно решать не нам. Лишь ответил на вопрос: Цитата:
|
Часовой пояс GMT +3, время: 12:08. |