访问的JavaScript原生“这个” jQuery的

问题描述:

内部如何访问到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

使用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

你可以存储这个被覆盖前:

(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