2013-04-21 34 views
0

內部如何訪問到this.todayMoved函數內?它將通過jQuery稱爲所以this關鍵字將的jQuery被覆蓋到jQuery對象或DOM元素。訪問的JavaScript原生「這個」 jQuery的

下面是類似的東西我有什麼:

(function(Map) { 
    Map.Timeline = { 
     today: null, 

     Init: function() { 
      jQuery("#timeline").mousemove(Map.Timeline.Moved); // or this.Moved 
     }, 

     Moved: function (event) { 
      console.log(this);     // jQuery Object or DOM element 
      console.log(this.today);   // fails 
      console.log(Map.Timeline.today); // works fine 
     }, 

     // more code here ... 
+0

你的意思是'這個= Map.Timeline' – jacktheripper 2013-04-21 10:08:40

+0

@jacktheripper是的,你手動的意思是我重寫它? – Mahdi 2013-04-21 10:09:32

回答

7

使用jQuery.proxy()在回調調用中使用自定義的背景下

jQuery('#timeline').mousemove(jQuery.proxy(Map.Timeline.Moved, this)); 
+0

完美!謝謝! :) – Mahdi 2013-04-21 10:14:40

+1

1上,其中使用該擔心'proxy'最後一個很好的例子;) – 2013-04-21 10:15:12

1

你可以存儲這個被覆蓋前:

(function(Map) { 
var myvar = $(this); 
Map.Timeline = { 
    today: null, 


    Init: function() { 
     jQuery("#timeline").mousemove(Map.Timeline.Moved); // or this.Moved 
    }, 

    Moved: function (event) { 
     console.log(myvar);     // jQuery Object or DOM element 
     console.log(myvar.today);   // fails 
     console.log(Map.Timeline.today); // works fine 
    }, 

    // more code here ... 
+1

您的代碼不起作用。你不能在這樣的對象中使用'var myvar'。 – neo 2013-04-21 10:13:43

+0

其實我並不想存儲的jQuery'this' ......我想,以防止被覆蓋本地'this'關鍵字。你在那裏做的是存儲jQuery對象... – Mahdi 2013-04-21 10:20:24