我在<div>
內有幾個<span>
元素。當您將鼠標懸停在一個<span>
上時,它應該突出顯示之前的所有<spans>
以及懸停<span>
。選擇同一父母的所有在前孩子
我該如何使用CSS或jQuery來做到這一點?
我懷疑一個jQuery答案將做到以下幾點,但我無法找到函數1 & 2.
- 獲取當前懸停的元素的子#
- 選擇所有孩子最多
- 將「懸停」類添加到他們
我在<div>
內有幾個<span>
元素。當您將鼠標懸停在一個<span>
上時,它應該突出顯示之前的所有<spans>
以及懸停<span>
。選擇同一父母的所有在前孩子
我該如何使用CSS或jQuery來做到這一點?
我懷疑一個jQuery答案將做到以下幾點,但我無法找到函數1 & 2.
您可以用jQuery做到這一點:
$('span').hover(function(){
$(this).prevAll().addClass('hover');
},function(){
$(this).prevAll().removeClass('hover');
});
這使用prevAll選擇同一div的所有前面的跨度。不需要使用當前元素的索引,但是可以使用索引函數獲得它,然後使用lt選擇器($(this).sibblings(":lt("+$(this).index+")")
)。當然,prevAll要簡單得多。
由於注意到了elclarns,這可以在
$('span').hover(function(){
$(this).prevAll().toggleClass('hover');
});
縮短按照規定,我什麼都看不到難在這裏,我們將使用prevAll()函數來選擇所有的兄弟姐妹先前的例子基於當前項目。
$("span").hover(function(){
$(this).prevAll().addClass("hover");
}, function(){
$(this).removeClass("hover");
})
這取決於兼容性,可以使用CSS,雖然沒有加入類名稱:
div:hover span {
/* colours all descendent spans of hovered-div */
background-color: #ffa;
}
div:hover span:hover,
div:hover span:hover ~ span {
/* 'de-colours' the hovered-span, and
the subsequent sibling spans */
background-color: #fff;
}
有趣。你可以修復它,使它不着色最後一個div,如果你把它懸停? –
應該指出的是[這與IE7或IE8不兼容](http://caniuse.com/#feat=css-sel3)。 –
@dystroy:我不完全確定我理解你的第一個評論,但我認爲你的意思是當':hover'離開'span'時突然閃爍,突出顯示所有'span',直到另一個'span'被徘徊?如果是這樣,否(儘管可能以某種方式)。至於IE <9,不,這是一個相當有限的演示,不幸的是。但是,正如你所說的那樣,「有趣」。如果僅僅作爲概念驗證...... =) –
上帝,我愛jQuery的。感謝dystroy! –
更簡短:'$(this).prevAll()。toggleClass('hover')'http://jsfiddle.net/6zm3E/2/ – elclanrs
這是一個很好的答案我寫了一個最接近.container,然後nextUntill - 這很簡單 –