2011-08-13 9 views
2

を呼び出す:私はどのように行うのです...私はそれを把握することはできません動的に私はこれやりたいjQueryの機能

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

:これは結果の関数になるように

var todo = "text"; 

$this.eval(todo).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

私は完全に同意します。しかし、元のポスターは変数をコード行の一部として使用することを求めていました。そういうわけで私は "あなたがそれを完全に動的にしなければならないか"と言いました。それは正しい解決策ではありませんが、コードブロックに変数を埋め込むという質問に答えます。しかし、はい、これは効率的なソリューションにさえ近くないことが明らかにされるべきです。 –