悬停时突出显示元素
Highlight an element on hover
我想在悬停时突出显示一个元素,并且只突出显示该元素。这应该模拟当您选择了放大镜时,使用chrome开发工具将鼠标悬停在元素上的行为。这是为了我正在制作的铬扩展。
我想我需要一个 JS 解决方案,因为 css 中的伪 :hover 似乎适用于后台的所有元素,即容器元素,所以我需要防止 css 中的事件冒泡,据我所知你不能做到。
我试过了
$('body').children().mouseover(function(e){
$(".hova").removeClass("hova");
$(this).addClass("hova");
}).mouseout(function(e) {
$(this).removeClass("hova");
});
-.css-
.hova {
background-color: pink;
}
和jquery的hover(),两者都总是选择容器。
我也尝试过使用css不透明度,以防背景被覆盖,但似乎它总是选择父元素。我想要我徘徊在DOM的最远的孩子。
我敢肯定那里有一些简单的解决方案,也许它在 chrome 扩展程序中过于复杂......我不确定
这是你需要的吗? http://jsbin.com/vidojamece/1/
不要将类添加到处理程序中的 $(this),而是将类添加到 e.target (span) 并返回 false,这样它就不会冒泡到div:
$('body').children().mouseover(function(e){
$(".hova").removeClass("hova");
$(e.target).addClass("hova");
return false;
}).mouseout(function(e) {
$(this).removeClass("hova");
});
您需要使用目标元素而不是"this",这是您将鼠标悬停在上面的实际元素并使用 stopPropagation,以便不对后面的每个元素重复该过程:
$('body').children().mouseover(function(e){
e.stopPropagation();
$(".hova").removeClass("hova");
$(e.target).addClass("hova");
}).mouseout(function(e) {
$(e.target).removeClass("hova");
});
你可以用css(和js)做到这一点:
*:hover {
background-color: pink;
}
甚至
div:hover {
background-color: pink;
}
在 js 中:
$('body').children().each(function() {
$(this).hover(function() {
$(".hova").removeClass("hova");
$(this).addClass("hova");
}, function() {
$(this).removeClass("hova");
});
});
相关文章:
- javascript来显示元素属性
- 使用JavaScript或jQuery隐藏和显示元素
- 如何在Angular JS中滚动显示元素
- 如何在使用jQuery应用display:none后正确显示元素
- 仅使用Javascript隐藏/显示元素,而不会弄乱DOM
- jQuery单击并显示元素列表
- 键盘没有在Android和BlackBerry中显示元素焦点
- 在CSS转换期间显示元素的大小值
- 当我们关注jQuery时,只显示元素
- 包含方法和突出显示元素的问题
- JS/JQuery隐藏元素,更改文本,显示元素
- 如何显示元素的一部分,并在单击时切换到所有元素
- 在隐藏元素中显示元素
- 当PROTRACTOR元素后面有元素时,我怎么能知道当前的显示元素
- 在mouseover上显示元素在mouseleave上隐藏
- jquery显示元素是否具有类和特定值的内容
- 不能在复选框旁边显示元素
- 动态显示元素上的JavaScript触摸端;不要开火
- 点击JQuery/HTML5显示元素的索引/位置
- AngularJS:如何默认显示元素,并在按下按钮时切换