Javascript 使用jquery添加div边框,而不更改宽度和默认边框

Javascript 使用jquery添加div边框,而不更改宽度和默认边框,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我想做一些像Inspect Element highlight这样的东西。我想在鼠标上方的div中添加边框 我不希望这会改变div的宽度,还有一些div有自己的边框,所以我不想替换div的默认边框 $( document ).find('div').hover( function(e){ $(this).css('border', '1px dashed #59A3D5'); e.s

我想做一些像Inspect Element highlight这样的东西。我想在鼠标上方的div中添加边框

我不希望这会改变div的宽度,还有一些div有自己的边框,所以我不想替换div的默认边框

 $( document ).find('div').hover(
                function(e){
                    $(this).css('border', '1px dashed #59A3D5');
                    e.stopPropagation();
                    e.preventDefault();
                    return false;
                },function(e){
                    e.preventDefault();
                    e.stopPropagation();
                    $(this).css('border', 'none');
                    return false;
                }
            );
我就是这么想的。但它正在替换div的默认边框(如果有),并更改div的宽度。。。它还与父div相邻

编辑

我还尝试向mouseovered div添加一个类,并使用
:before
添加带有绝对位置的背景,但如果网站使用相对位置和绝对位置,则会出错:

            $(document).find('div').hover(
                function(e){
                    $(document).find('div').removeClass("highlight");
                    var current_div_position = $(this).position();
                    $(document).find('body').append('<style>.highlight:before { width: '+$(this).outerWidth(true)+'; height: '+$(this).outerHeight(true)+'; top: '+current_div_position.top+'; left: '+current_div_position.left+';}</style>');
                    e.stopPropagation();
                    $(this).addClass("highlight");
                    e.preventDefault();
                    return false;
                },function(e){
                    $(this).removeClass("highlight");
                    e.preventDefault();
                    e.stopPropagation();
                    return false;
                }
            );
我能做什么?谢谢

改为添加。 它不会更改尺寸,并且将在不干扰边界的情况下进行渲染

.highlight {
    outline: 2px dashed #0f0;
}
例如:


编辑:您也可以使用
框阴影
使高亮显示的元素“发光”:

首先,一个元素不能同时定义两个
边框样式属性。按照你的方式,一条边界将永远取代另一条边界

你可以选择一些其他的方法。我建议,就像前面提到的@pawel一样,使用
outline
。如果必须使用边框,则可以让另一个元素
包装
您的元素,并在悬停时将边框添加到此包装中。您可以对其进行排列,以使此包装器不可见


另外,作为旁注,因为您想要的只是元素悬停时的样式更改,所以可以并且应该使用css来实现它。查看css
:将鼠标悬停

改为添加
大纲
。它不会更改尺寸,并且将在不干扰边界的情况下进行渲染。如果元素没有,则可以使用。顺便说一下,
中不需要返回false如果使用
e.preventDefault()
e.stopPropagation()。反之亦然。@pawel我会加上这个作为答案。@Rorymcrossan我认为你是对的,贴出来作为答案。
.highlight {
    outline: 2px dashed #0f0;
}