我的HTML包含一系列嵌套的div的,每個都具有相同的類(「殼」),但唯一的ID。jQuery的 - 鼠標懸停
<div class="shell s01" id="blah">
<!-- s01 content -->
<div class="shell s02" id="bar">
<!-- s02 content -->
<div class="shell s03" id="wah">
<!-- s03 content -->
</div>
<div class="shell s03" id="foo">
<!-- s03 content -->
</div>
</div>
</div>
我想一個div當鼠標進入它改變的邊框顏色,但是當鼠標進入一個子DIV它應該返回到原來的顏色。下面的jQuery代碼將邊框顏色更改爲藍色,但是在鼠標進入子div時不會將父div邊框返回原始顏色(#8E8DA2)。相反,當把鼠標放在內部div上時,它和它的所有祖先都會突出顯示。例如,如果懸停在「wah」上,則「blah」和「bar」也會突出顯示。我想要「blah」和「bar」恢復原來的邊框顏色。
我明白,當鼠標懸停在兒童身上時,它也會覆蓋孩子的父母。但我不確定爲什麼下面的「父母」聲明不能解決問題。
$('.shell').mouseover(function() {
$(this).parent('.shell').css('border-color', '#8E8DA2');
$(this).css('border-color', '#0000FF');
});
$('.shell').mouseout(function() {
$(this).css('border-color', '#8E8DA2');
});
任何想法?謝謝!
非常感謝!檢查出你鏈接的文章後,我發現[這篇文章在stackoverflow](http://stackoverflow.com/questions/1327711/jquery-hover-event-with-nested-elements)有一個工作解決方案。現在我需要閱讀有關stopPropagation方法的信息,以瞭解其工作原理。 – 2011-03-10 15:29:19
@Fred Mars你可以在jQuery中的事件處理程序中輕鬆停止傳播。在函數中,例如指定e參數,然後調用e.preventDefault()。我已經更新了我的答案,只是一個例子。 – Tom 2011-03-10 15:54:00