2010-12-23 41 views
0

我確定這是一個簡單的問題,但在這裏沒有看到適用的答案。我有這樣的代碼:jQuery:將JS功能綁定到所有選定的元素

$('.thumbImg').mouseout(function(){selectCur()}); 
//selectCur() is a pure-JS function defined elsewhere in the document 

但功能只綁定到第一個元素.thumbImg類。通常情況下,我會使用$(this),但這不起作用(除非我做錯了什麼)。

我想我最後的手段是for循環,但我敢肯定有一種方法可以避免這種情況。

謝謝!

+0

問題可能在`selectCur()`中。該代碼*會將處理程序綁定到所有.thumbImg的。 – 2010-12-23 01:41:13

+0

你是對的。我有一個很好的,老式的緩存問題。 – Nathan 2010-12-23 01:44:27

回答

0

不要認爲這是一個緩存問題,這是一個上下文問題。通過將$ this傳入您的selectCur來修復它。

$('.thumbImg').mouseout(function(){selectCur($(this))}); 

甚至

$('.thumbImg').mouseout(selectCur); 

然後selectCur可以使用$(本);我認爲第一種解決方案更好,因爲selectCur可以從其他地方使用,所以您可以在需要時傳遞節點。

1

原因this不起作用的是它在您的代碼function() {}本地,而不是selectCur()函數。

如果你想在selectCur()使用this,你可以不喜歡它:

$('.thumbImg').mouseout(selectCur);

你做的方式是讓一個匿名函數/關閉調用你的函數,並指的是在鼠標移開。取而代之的是,你所需要做的就是指向你的函數(不要叫它,這裏沒有()),它會在事件觸發時被調用。你不需要一個函數來指向一個函數。只要指出它就行了。

相關問題