我正在制作一个 chrome 扩展,我在其中为用户鼠标悬停的任何 dom 元素添加边框。我的主要问题是,当我滚动带有子元素的 div 元素时,父 div 和子 div 都收到边框,而我只希望鼠标正下方的 div 接收边框。这是我的代码的缩短版本:
$("*").hover(
function(e) {
var targ = $(e.currentTarget);
targ.css("border", "3px solid red");
},function(e){
var targ = $(e.currentTarget);
targ.css("border", "none");
}
);
有没有办法让目标只能是鼠标正下方的 div 而不是父 div?
* *想通了,但它很简单:
var killedObj;
var outlines=[];
var hovering=[];
$("*").not("body").not("head").each(
function(i){
outlines[i] = $(this).css("outline");
hovering[i] = false;
//console.log("index = " + i + " class name = " + $(this).attr('class'));
$(this).hover(
function(){
hovering[i]=true;
if($(this).parents()!=null)killOutline($(this).parents(), outlines[$(this).parents().index()]);
if($(this).children()!=null)killOutline($(this).children(), outlines[$(this).children().index()]);
$(this).css("outline", "2px solid red");
},function(){
hovering[i]=false;
$(this).css("outline", ""+outlines[i]);
if($(this).parent()!=null){
if(hovering[i-1] == true){
resetOutline($(this).parent());
}
}
}
);
}
);
function killOutline(obj,outline){
obj.css("outline", ""+outline);
}
function resetOutline(obj){
obj.css("outline", "2px solid red");
}
如果有人有更清洁的方式,请随意