我正在製作一個Chrome擴展,其中我將邊框添加到用戶鼠標的任何dom元素結束處。我的主要問題是,當我翻轉一個div元素與孩子父母的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的下?
* *想通了,但它sooper hakey:
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");
}
如果任何人有一個更清潔的方式隨時
'e.stopPropagation()'? –
它不工作,但我可能沒有正確實施它? – user2503648
我現在看到您的更新代碼。這可能適用於某些網站,但如果您試圖允許用戶瀏覽到的任何網站的輪廓線,那麼您的腳本應該會死掉的輪廓會出現問題。見下面我的其他建議。 –