我有以下 JavaScript:
function MyMethod(func)
{
func();
}
$('#Btn').on('click', function(e)
{
e.preventDefault();
var form = $(this).parent();
MyMethod(form.submit);
});
http://codepen.io/chrisnicholson/pen/YGxOdJ
这不起作用,在 Chrome 中出现以下错误:
jquery.min.js:4 未捕获类型错误:无法读取未定义的属性“触发器”
如果我修改对 MyMethod
的调用以使用以下内容,则它可以工作:
MyMethod(function(){
form.submit();
});
http://codepen.io/chrisnicholson/pen/amyRXX
谁能解释一下这是为什么吗?
最佳答案
啊,this
的绑定(bind)效果很好!如果您只提供方法,则不会在表单上调用它,而是在全局对象上调用它,例如
submit.call(window) // resp. undefined in strict mode. Hence the error, I guess.
你想要的在哪里
submit.call(form)
解决此问题的一种方法:Bind表单的提交方法:
MyMethod(form.submit.bind(form));
关于javascript - 无法将 jQuery object.method 传递给另一个要执行的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39788318/