考虑这个 HTML:
<p>Click me</p>
我想为每个对象编写一个带有点击处理程序的对象p
,但遇到了找不到我的点击处理程序函数的问题。
此代码不起作用:
(function(){
var self = this;
$("p").each(function(){
$(this).click(self.myFunction);
});
self.myFunction = function(){ alert("myFunction"); }
})();
当我将点击处理程序分配包装在一个函数中时,它确实有效:
(function(){
var self = this;
$("p").each(function(){
$(this).click(function(){ self.myFunction(); });
});
self.myFunction = function(){ alert("myFunction"); }
})();
问题:为什么不起作用$(this).click(self.myFunction)
,但起作用$(this).click(function(){ self.myFunction(); })
?
编辑:以下代码确实有效:
$("p").click(myFunction);
function myFunction(){ alert("myFunction"); }
这也不应该失败吗?
PS我让我的对象工作而无需通过移动函数的位置来包装函数:
(function(){
var self = this;
self.myFunction = function(){ alert("myFunction"); }
$("p").each(function(){
$(this).click(self.myFunction);
});
})();
我猜这个问题与解析器有关。