考慮這個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爲你回答另一個問題。謝謝。 –