2012-02-02 2 views
0

Я пытаюсь заменить chaned функции JQuery с вар, но он не работает (ошибка synthax)заменить функцию JQuery с варом

Triing что-то вроде этого:

var foo = 'next()'; 
$(this).+foo+.show(); 

возможно ли это как-то понять, что ? Foo является переменная, которая меняется на «пред()» в другой, если условие

+2

Только с 'eval'; нет. Вместо этого используйте условные обозначения. –

+2

Нет, не только с eval. Кроме того, если вы собираетесь упомянуть об условных выражениях, вы должны предложить ggzone немного советов о том, где их узнать :) – Kato

ответ

3

Делают это так:

var foo = 'next'; 
$(this)[foo]().show(); 

Устанавливая только имя метода переменной, вы можете использовать [] и использовать переменную для извлечения свойства next объекта jQuery.

Это эквивалентно ...

$(this)['next']().show(); 

что эквивалентно ...

$(this).next().show(); 
+0

таким образом вы не вызываете foo –

+1

Просто для того, чтобы основываться на этом, в JavaScript 'foo.bar' и 'foo ['bar']' означает то же самое, с 'foo ['bar']', имеющим это преимущество, что вы можете использовать переменную для ключа. – cdmckay

+0

Для выполнения этого метода вам понадобится '[foo]()'. –

3

попробовать это:

var foo = 'next'; 
$(this)[foo]().show(); 
-1

У вас есть два варианта, которые я вижу:

var foo = next; // use the OBJECT here, not a string 
$(this).foo().show(); 

OR 

var foo = false; 
if (foo) 
    $(this).next().show() 
else 
    $(this).prev().show();