从 jQuery .on("change"... event) 中调用多个函数
Calling multiple functions from within jQuery .on("change"... event)
我想在 myValue 更改时调用两个函数,虽然这工作得很好:
this.myValue.on("change", $.proxy(self.functionOne, self));
this.myValue.on("change", $.proxy(self.functionTwo, self));
在这种情况下两个函数都没有被调用:
this.myValue.on("change", function () {
$.proxy(self.functionOne, self);
$.proxy(self.functionTwo, self);
})
如果我现在不能像现在这样在一个更改事件中调用这两个函数,这对我来说没什么大不了的,但我是 jQuery 的新手,想了解原因。
改用原生 apply
或 call
this.myValue.on("change", function() {
self.functionOne.apply(this, arguments);
self.functionTwo.apply(this, arguments);
});
$.proxy
采用一个函数和 returns 一个始终具有特定上下文的新函数,并且在引用返回的函数时起作用,但不是您在作为返回函数的回调永远不会被调用。
你当然可以使用 $.proxy
并且只调用返回的函数
this.myValue.on("change", function () {
$.proxy(self.functionOne, self)();
$.proxy(self.functionTwo, self)();
});
或者只是让 jQuery 处理它,它优化事件并无论如何使用内部队列
this.myValue.on("change", self.functionOne);
this.myValue.on("change", self.functionTwo);
$.proxy
方法只会 return 一个函数,但不会调用它。您可以使用:
self.functionOne.call(self);
self.functionTwo.call(self);
调用函数调用函数,传入'context'即。在函数中用作 'this' 的内容,很像在 $.proxy.
中
您需要调用$.proxy()
中定义的函数:
this.myValue.on("change", function () {
$.proxy(self.functionOne, self)();
$.proxy(self.functionTwo, self)();
})
注意尾随 ()
。
为什么不能这么简单呢?
this.myValue.on("change", function () {
functionOne();
functionTwo();
})
我想在 myValue 更改时调用两个函数,虽然这工作得很好:
this.myValue.on("change", $.proxy(self.functionOne, self));
this.myValue.on("change", $.proxy(self.functionTwo, self));
在这种情况下两个函数都没有被调用:
this.myValue.on("change", function () {
$.proxy(self.functionOne, self);
$.proxy(self.functionTwo, self);
})
如果我现在不能像现在这样在一个更改事件中调用这两个函数,这对我来说没什么大不了的,但我是 jQuery 的新手,想了解原因。
改用原生 apply
或 call
this.myValue.on("change", function() {
self.functionOne.apply(this, arguments);
self.functionTwo.apply(this, arguments);
});
$.proxy
采用一个函数和 returns 一个始终具有特定上下文的新函数,并且在引用返回的函数时起作用,但不是您在作为返回函数的回调永远不会被调用。
你当然可以使用 $.proxy
并且只调用返回的函数
this.myValue.on("change", function () {
$.proxy(self.functionOne, self)();
$.proxy(self.functionTwo, self)();
});
或者只是让 jQuery 处理它,它优化事件并无论如何使用内部队列
this.myValue.on("change", self.functionOne);
this.myValue.on("change", self.functionTwo);
$.proxy
方法只会 return 一个函数,但不会调用它。您可以使用:
self.functionOne.call(self);
self.functionTwo.call(self);
调用函数调用函数,传入'context'即。在函数中用作 'this' 的内容,很像在 $.proxy.
中您需要调用$.proxy()
中定义的函数:
this.myValue.on("change", function () {
$.proxy(self.functionOne, self)();
$.proxy(self.functionTwo, self)();
})
注意尾随 ()
。
为什么不能这么简单呢?
this.myValue.on("change", function () {
functionOne();
functionTwo();
})