我有一个JavaScript变量,其中包含jQuery方法的名称:
var method = 'attr("src")';
Run Code Online (Sandbox Code Playgroud)
我怎样才能让它像以下一样工作:
console.log($('img').method)
Run Code Online (Sandbox Code Playgroud)
我试过了
console.log($('img')[method]())
Run Code Online (Sandbox Code Playgroud)
但它给出了这个错误:
Uncaught TypeError: Object [object Object] has no method 'attr("src")'
Run Code Online (Sandbox Code Playgroud)
你的问题是,你有两个方法的名称和它的参数在单个字符串编码.
如果您有一个数组首先包含方法名称然后是参数,这将很容易,根据以下简单的插件,我刚刚敲了一下:
(function($) {
$.fn.invoke = function(args) {
var method = args.shift();
return $.fn[method].apply(this, args);
}
})(jQuery);
var method = ['attr', 'src'];
var src = $('img').invoke(method);
Run Code Online (Sandbox Code Playgroud)