考虑这个HTML:范围的功能与JavaScript代码顺序对象
<p>Click me</p>
我还想写为每个p
click处理的对象,而是碰上的问题,我的点击事件处理函数可以不被发现。
此代码不工作:
(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"); }
不应该这个失败呢?
P.S.我有我的目标,而不需要工作通过移动功能的位置来包装功能:
(function(){
var self = this;
self.myFunction = function(){ alert("myFunction"); }
$("p").each(function(){
$(this).click(self.myFunction);
});
})();
我想这个问题是解析器相关。
您需要了解JavaScript代码解析和评估顺序。看到这个:http://stackoverflow.com/questions/3887408/javascript-function-declaration-and-evaluation-order/3887590#3887590 – slebetman
@slebetman +1为你回答另一个问题。谢谢。 –