2010-10-29 147 views

回答

1

有沒有必要在這裏傳遞一個指標,由於this將引用您要在click事件處理程序中單擊的元素,因此您可以這樣做:

var MyObject = { 
    init: function() { 
     this.items = $('#menu a'); 
     this.items.bind('click', this.doSomething); 
    },  
    doSomething: function() { 
     alert(this.innerHTML); 
    } 
}; 

You can test it out here

+0

是的,但我需要「this」將成爲MyObject,而不是觸發事件的元素「a」。 – Luistar15 2010-10-29 01:39:21

+0

@ Luistar15 - 在事件處理程序中情況並非如此,this指的是元素,如果您希望它指向元素,最好創建一個像您所指向的「self」的變量,或更改上下文的處理程序......但只有一個變量的副本,只要執行'MyObject'來引用它,除非我失去了一些東西? – 2010-10-29 01:41:23

+0

我明白了,是的,它只有一個副本。所以,我不能做這樣的事情(http://jsfiddle.net/mUjAj/2/)? jquery版本將是(http://jsfiddle.net/mUjAj/3/)。那麼,我不能用「this」來指代「MyObject」嗎?或者有什麼辦法? – Luistar15 2010-10-29 02:53:45

0

試試這個,看看它是否工作:

var MyObject = { 
    init: function() { 
     this.items = $('#menu a'); 

     for (var i = 0; i < this.items.length; i++) { 
      $(this.items[i]).bind('click', {index:i}, this.doSomething); 
     } 
    }, 

    doSomething: function (e) { 
     alert(e.data.index); 

    } 
}; 
+0

是的,它的工作,只是一點點修復:doSomething:function(e)...,謝謝 – Luistar15 2010-10-29 01:32:15

+0

我還不能投票,但再次感謝。 – Luistar15 2010-10-29 01:35:26

+0

奧普斯,我需要「這個」將是MyObject,而不是引發事件的元素「a」。 – Luistar15 2010-10-29 01:38:55

相關問題