2010-05-29 154 views
1

我不知道這是什麼問題?jQuery filter()遍歷不似乎工作?

$('.post').live('mouseenter mouseleave', function() { 
     $(this).filter('anything here,a,div,.class,#id').toggleClass('hidden'); 
    }); 

這裏工作正常。

$('.post').live('mouseenter mouseleave', function() { 
     $(this).toggleClass('hidden'); 
    }); 

有一個我想在鼠標懸停上顯示的錨點。類似Facebook

+0

$(this)的上下文是什麼?你確定它有什麼你過濾嗎? – Eli 2010-05-29 17:23:52

+0

此外,作爲一個整體,您可能希望這樣做兩次,一次開啓,一次關閉,並明確使用顯示/隱藏。如果光標移動得足夠快,它可能無法趕上關閉。 – Eli 2010-05-29 17:25:58

回答

3

$(this)指您的.post元素。

.filter()刪除與選擇器不匹配的任何東西。

因此,在你給出的例子,如果.post元素不是下列

'anything here,a,div,.class,#id' 

它被過濾掉一個。

.filter()不遍歷。它需要一個jQuery集合並將其減少爲與給定選擇器匹配的元素。

http://api.jquery.com/filter/


編輯:

有很多方法在jQuery的遍歷。

http://api.jquery.com/category/traversing/

要獲取所有a元素是收到該事件的.post元素的後代,你可以這樣做:

$(this).find('a'); 

哪個遍歷方法使用將取決於您的情況。

+0

我懂了,它使用的孩子();感謝您的知識 – 2010-05-29 17:34:20

+0

'$(this)'是指接收事件的'.post'元素。要訪問'$(this)'的後代,你可以執行'$(this).find('a')'。我會更新我的答案。 – user113716 2010-05-29 17:37:10