2010-08-17 50 views
1

我希望使用JQuery,當我將鼠標懸停在列表項上時,顯示並隱藏一些錨標籤。JQuery如何選擇當前列表項中的所有錨點?

如何使用$(this)循環顯示列表項目中的當前錨點?

這是我到目前爲止有:

$(document).ready(function() { 
    $('.currentlist > li').mouseover(function(event){ 
     // loop through each anchor tag within this list using $(this) 
     // and add the .active class 
    }); 
    $('.currentlist > li').mouseout(function(event){ 
     // loop through each anchor tag within this list using $(this) 
     // and remove the .active class 
    }); 
}); 


a .active 
{ 
    display: block; 
} 

a.edit-icon 
{ 
    display: none; 
} 

a.delete-icon 
{ 
    display: none; 
} 

<ul class="currentlist"> 
    <li><a href="#" class="active">index</a><a href="#" class="edit-icon">edit</a><a href="#" class="delete-icon">delete</a></li> 
    <li><a href="#" class="active">profile</a><a href="#" class="edit-icon">edit</a><a href="#" class="delete-icon">delete</a></li> 
    <li><a href="#" class="active">contactus</a><a href="#" class="edit-icon">edit</a><a href="#" class="delete-icon">delete</a></li> 
    <li><a href="#" class="active">findus</a><a href="#" class="edit-icon">edit</a><a href="#" class="delete-icon">delete</a></li> 
</ul> 

回答

3

試試這個:

$(document).ready(function() { 
    $('.currentlist > li').mouseover(function(event){ 
     $(this).find('a').addClass('active'); 
    }); 
    $('.currentlist > li').mouseout(function(event){ 
     $(this).find('a').removeClass('active'); 
    }); 
}); 

$(this)指徘徊li$('a', $(this))上下文選擇用於查找在他們裏面的所有鏈接,並添加/刪除類。

+0

@Sarfaz - 謝謝 - 希望我的複製和粘貼沒有任何問題,但是..它不工作。 – 2010-08-17 15:20:49

+0

@Nicholas Murray:我修改了代碼;請:) – Sarfraz 2010-08-17 15:22:34

+0

@Sarfaz - 我必須做一些愚蠢的事這裏是兩個部分的實際代碼: 測試 <腳本類型= 「文/ JavaScript的」 SRC =「HTTP://code.jquery。 com/jquery-1.4.2.js「> 2010-08-17 15:41:34

0

喜歡的東西

$(event.currentTarget).find("a.active").removeClass("active") 

應該爲你做它。

1

您可以使用.hover()縮短事件,.find()得到主持人和.addClass().removeClass()對切換.active和關閉,就像這樣:

$(function() { 
    $('.currentlist > li').hover(function() { 
    $(this).find('a').addClass('active'); 
    }, function() { 
    $(this).find('a').removeClass('active'); 
    }); 
}); 

你要在這裏使用.hover()因爲mouseovermouseout將在進入和退出兒童時觸發,其中mouseentermouseleave(其使用.hover())不會)。

而且你的CSS需要修復,這一點:

a .active 
{ 
    display: block; 
} 

應該不會有空間,就應該是這樣的:

a.active 
{ 
    display: block; 
} 

而且,它應該被移動到年底使它會覆蓋.edit-icon.delete-icon的定義。

Here's a working version with all of the above changes

+0

哇從來沒有見過那個jsFiddle之前那個石頭! – 2010-08-17 15:38:38

+0

@Nicholas - 你在這個答案修復後仍然有問題嗎? – 2010-08-17 15:52:36

+0

現在不行。感謝您通過jsFiddle的綜合答案。我認爲JQuery的問題必須繪製這個星球上最快的槍支! – 2010-08-17 15:59:41

相關問題