2012-09-30 48 views
1

想知道在JavaScript中是否有方法通過字符串調用函數/方法名稱?動態jQuery效果

情景,寫一點jQuery的運行效果的目標(S)。我想使這個效果動態(用戶可以改變)。

我想,最好我會尋找類似jQuery('target').Effect('slideDown','slow');

或任何會產生相同的結果,具有有一些霸道開關之類的語句switch(vEffect){ case 'slideDown': jQuery().slideDown(); break; }這對我來說似乎是多餘的了...

回答

6

您可以使用屬性語法來引用一個方法:

jQuery('target')['slideDown']('slow'); 

或者,如果你在一個變量有它:

var methodName = 'slideDown'; 
jQuery('target')[methodName]('slow'); 

你也可以創建自己的jQuery插件,名爲effect,它可以像你想要的那樣獲取參數,然後使用上述技術調用實際的方法。

jQuery.fn.effect = function(methodName, speed) { 
    return this[methodName](speed); 
} 

然後你可以這樣調用:

jQuery('target').effect('slideDown', 'slow); 
+0

輝煌。正是我在找什麼。感謝jQuery Plugin的想法,這就是問題的根源所在(我正在寫這個插件)。在你頭頂上,這會被稱爲什麼(如果我必須查看它或稍後參考)? –

+0

@thesocialhacker - 搜索此「通過變量訪問javascript屬性」。 – jfriend00