jQuery的通带参数的函数的参数jQuery的方法

问题描述:

我想知道是否和如何你可以传递一个jQuery命令,函数的参数jQuery的通带参数的函数的参数jQuery的方法

var childs = ["#foo", "#bar"]; 

loopTheChilds("trigger('change')"); 

loopTheChilds("prop('disabled', true)"); 

var loopTheChilds = function (operation) { 

    $.each (childs, function (idx, val) { 
     $(val)[operation](); 
    }); 

} 

我的GOL将获得此

$("#foo").trigger("change"); 
$("#bar").trigger("change"); 

// or 

$("#foo").prop('disabled', true); 
$("#bar").prop('disabled', true); 

或知道如何以任何其他方式获得相同的结果。

感谢

+0

这是可能的的eval(),但使用eval()被认为是不好的做法。 – WaldemarIce

你不能告诉的JavaScript代码是什么,除非你使用eval但在评论中提到的,这是不是很安全,一般不建议执行作为一个字符串。然而你可以做的是让你的loopTheChilds方法以函数作为参数,并且该函数有一个引用元素的参数。

所以,你可能最终会做一些像这样:

var childs = ["#foo", "#bar"]; 

loopTheChilds(function(elem) { 
    elem.trigger('change'); 
}); 

loopTheChilds(function(elem) { 
    elem.prop('disabled', true); 
}); 

function loopTheChilds(func) { 
    $.each(childs, function(idx, elemName) { 
     func($(elemName)); //wrap in jquery selector 
    }); 
} 

现在你只要沿着你想,当你调用loopTheChilds方法来执行该功能通过。

工作示范这里:https://jsfiddle.net/phpyn1t6/

+0

这不完全是我的想法,但在我看来,这是一个很好的解决方案。谢谢 –