我有以下简单的JavaScript"类":
function Person(params)
{
this.name = params.name;
}
Person.prototype.SayHi = function()
{
alert(this.name + " says hi");
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,这可以正常工作.运行以下代码给我一个弹出窗口,上面写着"Alice说嗨":
var alice = new Person({name:"Alice"});
alice.SayHi();
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试将其分配给按钮事件时,它将无法工作:
$("#AliceOnClick").on("click", alice.SayHi);
$("#BobOnClick").on("click", bob.SayHi);
Run Code Online (Sandbox Code Playgroud)
看来该SayHi函数被调用,但该name字段为空.
最小的工作示例:
我究竟做错了什么?
Esa*_*ija 13
jQuery将事件处理程序的接收者设置为目标元素,以便您可以方便地执行类似的操作$(this).hide().
您可以使用例如$.proxy解决它:
$(function(){
$("#AliceOnClick").on("click", $.proxy(alice.SayHi, alice));
$("#BobOnClick").on("click", $.proxy(bob.SayHi, bob));
});
Run Code Online (Sandbox Code Playgroud)
只需在匿名函数中运行它即可调用它.由于您在对象上调用方法,因此需要括号.
$(function(){
$("#AliceOnClick").on("click", function() {
alice.SayHi();
});
$("#BobOnClick").on("click", function() {
bob.SayHi();
});
});
Run Code Online (Sandbox Code Playgroud)
在这里工作小提琴.
| 归档时间: |
|
| 查看次数: |
1256 次 |
| 最近记录: |