2011-08-13 148 views
2

我想這樣做:動態調用jQuery函數

var todo = "text"; 

$this.eval(todo).split(/\b[\s,\.-:;]*/).length; 

所以,這將是導致功能:

$this.text().split(/\b[\s,\.-:;]*/).length; 

我不出來...我該怎麼辦這個?

+0

可能重複[如何在Javascript中調用動態命名的方法?](http://stackoverflow.com/questions/969743/how-do-i-call-a-dynamically-named-method-in -javascript)和[others](http://stackoverflow.com/search?q=javascript+call+methods+dynamically) –

+0

爲什麼你需要像這樣動態調用它? –

回答

5
var todo = 'text'; 
$this[todo]().split(/\b[\s,\.-:;]*/).length; 
+0

啊完美簡單,謝謝! – delphi

0

如果您必須擁有完全動態的,那麼您可以簡單地把它放在一個字符串中,只是eval()它。事情是這樣的:

var obj_name = "text"; 
var eval_code = "$this."+ obj_name + "(todo).split(/\\b[\\s,\\.-:;]*/).length;"; 
var result = eval(eval_code); 

此外,不命名您的變量EVAL以避免與eval函數衝突。

希望有幫助!

+0

'eval'在這裏沒有必要。 –

+0

我完全同意。然而,原始的海報正在詢問如何使用變量作爲一行代碼的一部分。這就是爲什麼我說「如果你必須充分發揮它的活力」。這不是正確的甚至是好的解決方案,但它解決了將變量嵌入代碼塊的問題。但是,是的,應該澄清,這甚至不是一個有效的解決方案。 –