所以我有一些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. 從類方法調用「外部」函數
- 6. 私有函數中的PHP調用函數類方法
- 7. 調用類方法 - jQuery的
- 8. 無法在JavaScript類中調用函數
- 9. 在主函數中調用方法
- 10. 在JavaScript函數中調用serverside方法?
- 11. 在perl中調用函數的方法?
- 12. 如何在構造函數中使用Graphics2D類調用方法?
- 13. 如何在父類中的方法中調用覆蓋函數
- 14. 在jQuery驗證插件的添加方法中調用函數
- 15. 在jQuery函數中調用JavaScript函數?
- 16. 如何在JavaScript中調用自調用函數中的方法?有點像jQuery
- 17. 如何在jQuery函數中使用類方法?
- 18. 在構造函數中自動調用超類的方法
- 19. 在類構造函數中調用的接口方法
- 20. 在類構造函數中找出調用的方法名稱?
- 21. 如何在一個類中調用另一個函數(方法)?
- 22. 在超類的構造函數中調用抽象方法
- 23. 要求在子類構造函數中調用方法
- 24. jQuery的調用函數的方法 - 函數名()VS funcion_name.call(本)
- 25. 在不調用構造函數的情況下在類中調用方法
- 26. jquery POST方法回調函數查詢
- 27. javascript函數調用方法
- 28. PHP調用函數/方法
- 29. This.routerExtensions.back()調用方法/函數
- 30. 在類參數上調用類方法
也許會幫助,如果你粘貼一個簡短的代碼片段。 – 2010-07-29 16:49:10