我的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