2011-12-29 1064 views
2

是否有可能通過一個jQuery方法作爲參數成函數,例如:將jquery方法作爲參數傳遞給函數?

function set_action(a,b) 
{ 
    $(a).b; 
} 

$(function(){ 
    $('#div_id1').click(function(){ 
     set_action('#div_id2','hide()'); 
    }); 
}); 

+0

的eval代碼,如果你想這樣做的'的eval( 「$( ' 」+ A + B「')。」);' – 2011-12-29 19:08:20

+2

不要使用'的eval( )'!遠離'eval()'。它非常低效! – 2011-12-29 19:10:37

回答

6

可以使用括號標記用字符串訪問對象的任何屬性:

var foo = { 
    bar: 5 
}; 

console.log(foo['bar']); 

所以,你可以這樣做:

function set_action(a,b) { 
    $(a)[b](); 
} 

set_action('#div_id2','hide'); 

注意,如果該對象不,這將拋出一個錯誤擁有該名稱的可調用屬性。

+0

您可以使用'$ .fn.hasOwnProperty(b)'(檢查jQuery對象時,使用'$ .fn')或'typeof $(a)[b] =='來檢查對象是否具有可調用屬性='函數'或b在$(a)中。 – 2011-12-29 19:17:16

0
function set_action(a,b) { 
    $(a)[b](); 
} 


$('#hello').click(function(){ 
    set_action('#bye','hide'); 
}); 

See it working.