所以我有一些JavaScript類,並且在一種方法中我使用jQuery來綁定函數來單擊事件。在這個函數中,我需要調用這個類的其他方法。在通常的js函數中,我通過"this.method_name()"
來完成,但在這裏,我猜,jQuery重新定義了「this」指針。在jQuery函數中調用類方法
回答
jQuery沒有重新定義this
指針,但這就是JavaScript函數通常的工作原理。以不同的名稱存儲對此指針的引用,然後使用它。
var self = this;
$("selector").click(function() {
self.method_name();
});
有關更多方法,請參閱this answer。
鏈接指向錯誤的答案。更新 – Anurag 2010-07-29 16:52:18
哦哇,thx,工作。 – Tyth 2010-07-29 17:19:46
@Tramp - 不客氣。但請注意,這仍然是一個拙劣的方法。而是使用'jQuery.proxy',或者甚至更好的是現在包含在標準中的'bind'方法。如果它在某些瀏覽器中不可用,則很容易定義一個 - http://stackoverflow.com/questions/3018943/javascript-object-binding-problem-inside-of-function-prototype-definitions/3019431#3019431 – Anurag 2010-07-29 17:29:59
有幾種不同的方法可以做到這一點。
Anurag有一個完美的例子。其他
兩種方式是jQuery的代理類(文中提到的其他答案)和「應用」功能
現在,讓我們創建一個click事件的對象:
var MyObj = function(){
this.property1 = "StringProp";
// jQuery Proxy Function
$(".selector").click($.proxy(function(){
//Will alert "StringProp"
alert(this.property1);
// set the 'this' object in the function to the MyObj instance
},this));
//Apply Function
//args are optional
this.clickFunction = function(arg1){
alert(this.property1);
};
$(".selector").click(this.clickFunction.apply(this,"this is optional"));
};
- 1. 在回調函數中調用類方法
- 2. 問題在子類構造函數中調用超類方法
- 3. 無法在jQuery中調用javascript函數
- 4. 從類方法調用「外部」函數
- 5. 私有函數中的PHP調用函數類方法
- 6. 調用類方法 - jQuery的
- 7. 無法在JavaScript類中調用函數
- 8. 在perl中調用函數的方法?
- 9. 如何在構造函數中使用Graphics2D類調用方法?
- 10. 如何在父類中的方法中調用覆蓋函數
- 11. 在jQuery驗證插件的添加方法中調用函數
- 12. 在jQuery函數中調用JavaScript函數?
- 13. 如何在JavaScript中調用自調用函數中的方法?有點像jQuery
- 14. 在類構造函數中找出調用的方法名稱?
- 15. 要求在子類構造函數中調用方法
- 16. jQuery的調用函數的方法 - 函數名()VS funcion_name.call(本)
- 17. jquery POST方法回調函數查詢
- 18. This.routerExtensions.back()調用方法/函數
- 19. PHP調用函數/方法
- 20. 在類參數上調用類方法
- 21. 計數方法聲明+方法使用JavaParser在類中調用
- 22. 無法調用類中的now()函數
- 23. 構造函數中的調用方法
- 24. 用jQuery AJAX調用類方法?
- 25. Jasmine - 在構造函數中調用方法調用
- 26. 從jQuery函數中引用Javascript的「類」方法
- 27. 如何從另一個類中調用方法函數?
- 28. 如何從類方法中的導入模塊調用函數?
- 29. 從類中的方法調用構造函數
- 30. 從主方法中的類調用構造函數?
也許會幫助,如果你粘貼一個簡短的代碼片段。 – 2010-07-29 16:49:10