我有一个JavaScript变量,其中包含jQuery方法的名称:
var method = 'attr("src")';
我怎样才能让它像以下一样工作:
console.log($('img').method)
我试过
console.log($('img')[method]())
但它会出现此错误:
Uncaught TypeError: Object [object Object] has no method 'attr("src")'
答案 0 :(得分:9)
您遇到的问题是您将方法名和的参数编码为单个字符串。
如果您有一个数组首先包含方法名称,然后是参数,这将很容易,按照以下简单的插件,我刚敲了一下:
(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);
答案 1 :(得分:0)
试试这个:
function fun(funcName){
return $('img')[funcName]('src');
}
fun('attr');
这是一个非常简单的方法,但它有效,因为$('img').attr('src')
是相同的,如果你写了这个$('img')['attr']('src')
答案 2 :(得分:0)
答案 3 :(得分:0)
您所描述的method
实际上是方法和参数的组合。如果您可以将方法名称和参数分解为可以执行以下操作:
var method = 'attr';
var param = 'class';
$('.post-text')[method](param); // returns "post-text" on this page.
与以下内容相同:
$('post-text').attr('class');