2014-12-03 5 views
0

Мне нужно запустить функцию с динамической переменной детали в ее имени.JS - Запуск функции jQuery с именем переменной

Функция для запуска:

$.element_gallery = function(state){} 

Код, зовущий его:

var name = "gallery"; 
window["$.element_"+name]('refresh'); 

Этот метод, кажется, работает с традиционными функциями Javascript, но не с помощью функции JQuery. Есть ли способ запустить это без использования eval() и без изменения имени функции?

ответ

1

Когда вы window["$.foo"] он ищет свойства на объект окна, который называется $.foo. Однако, если вы используете функцию jQuery, она сохраняется в свойстве jQuery (или $) объекта window, поэтому фактическое местоположение нужной вам функции - это окно. $ ["Foo"]. Изменение кода:

var name = "gallery"; 
window.$["element_"+name]('refresh'); 

Или, так как вы можете получить доступ к глобальным переменным без указания window., просто:

var name = "gallery"; 
$[".element_"+name]('refresh'); 
2

Заменить window с $

$["element_" + name]("refresh") 
+0

Да, я думаю, что это будет работать как $ является объектом, и это, как вы может вызывать метод или свойство объекта. –

Смежные вопросы