ユーザーのマウスが置かれている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");
}
誰かがよりクリーンな方法を持っている場合は、お気軽に