2011-04-04 93 views
1

我希望在頁面上附加或預先添加一些html。如何使用jQuery來評估變量

而不是我去功能:

var action = 'prepend'; // may be prepend or append 
var htmlStr = '<strong>text example</strong>'; 
var obj = $('#wrapExample'); 

if(action == 'prepend'){ 

    $(obj).prepend(htmlStr); 

}else{ 

    $(obj).append(htmlStr); 

} 

我可以採用某種EVAL '行動' 變量如

eval('$(obj).' + action + '(' + htmlStr + ')'); 

回答

4

你也許尋找

$(obj)[action](htmlStr) 

someobject["something"]someobject.something是在JavaScript等價。

+0

當然!有時答案很簡單。謝謝。 – 2011-04-04 16:59:56

2

相反的eval你可以使用:

$(obj)[action](htmlStr); 

以下是等價的:

a.foo 
a["foo"] 

因此,當你有這樣的:

var property = "foo"; 

你可以做:

a[property] 

以編程方式訪問屬性/方法。

此外,由於你的obj變量已經是一個jQuery的結果,你可以跳過額外$

obj[action](htmlStr); 
0

我覺得應該是 eval('$(obj).' + action + '(htmlStr);');