2011-12-29 77 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.