2010-08-25 95 views
2

我使用下面的代碼來隱藏和顯示一堆搜索結果中的一個框。每個結果都有自己的切換和框以顯示和隱藏。我遇到的問題是,點擊任何一個切換將顯示並隱藏頁面上的所有框,而不僅僅是一個結果的框。我怎樣才能做到這一點?Jquery .next()幫助

感謝

jQuery(document).ready(function ($) { 

    $("div.MoreResultsTrigger").click(function (e) 
    { 
     $("div.MoreResultsTrigger").next().slideToggle('fast'); 
    }); 

}); 

更新的代碼使用HOVER

$('a.MoreResultsTrigger').hover(
     function() { 
      $(this).next().show(); 
     }, 
     function() { 
      $(this).next().hide(); 
     } 
    ); 

回答

5

使用this關鍵字,因爲你只想旁邊一個你點擊上隱藏的元素。

jQuery(document).ready(function ($) { 

    $("div.MoreResultsTrigger").click(function (e) 
    { 
     $(this).next().slideToggle('fast'); 
    }); 

}); 
+0

有附加問題。我已將代碼更改爲使用懸停,如果用戶在出現時將盒子本身懸停,還需要顯示框以保持顯示。檢查我的原始問題以獲取更新的代碼。 – Cameron 2010-08-25 11:29:00

+0

我不太清楚我的理解... – Marko 2010-08-25 11:39:34

+0

如果用戶懸停觸發器,那麼它會顯示下一個div,這是我的盒子。但是,如果用戶將鼠標懸停在該框上,它將保持顯示而不是消失,因爲他們已經移除了觸發器上的懸停。 – Cameron 2010-08-25 12:30:52

3

未經測試,但嘗試:

$("div.MoreResultsTrigger").click(function (e) 
    { 
     $(this).next().slideToggle('fast'); 
    }); 
3

使用$(this).next().slideToggle('fast');,將其應用到只有你所選擇的一個。目前它將slideToggle應用於ALL div.MoreResultsTrigger's。

2

試試這個:

jQuery(document).ready(function ($) { 

    $("div.MoreResultsTrigger").click(function() 
    { 
     $(this).next('.toggleable').slideToggle('fast'); 
    }); 

}); 

加入了「.toggleable」類的。接下來()是以防萬一,你可能會在這之間的其他東西,你不想切換。您當然必須將.toggleable類添加到您感興趣切換的所有元素。當然,您可以替換並替換具有更多含義的名稱的toggleable。

+1

什麼是可切換的? – Marko 2010-08-25 10:55:18