只突出显示所选元素,而不是其父母?

时间:2014-01-27 21:17:03

标签: jquery css

我有以下代码似乎有效,但现在当鼠标悬停在元素上时它会突出显示所有父代。我所期望的只是我的鼠标所在的元素将有一个框围绕它绘制,当前的解决方案围绕元素和它的所有祖先。

  $("*").hover(
        function(e) { e.stopPropagation(); $(this).stop(true, true).addClass("highlight"); },
        function(e) { e.stopPropagation(); $(this).stop(true, true).removeClass("highlight"); }
   );

的CSS:

.highlight {
-moz-box-shadow: inset 0 0 5px 5px #FF00FF;
-webkit-box-shadow: inset 0 0 5px 5px #FF00FF;
box-shadow: inset 0 0 5px 5px #FF00FF;
}

这是正在发生的事情,即使我的鼠标没有聚焦在它上面,突出显示的边框仍然“粘住”。

http://jsfiddle.net/NE66P/419/

3 个答案:

答案 0 :(得分:2)

您需要将传入的事件对象用作悬停函数的第一个参数,以阻止事件传播。我还没有测试过,但它应该可以工作:

$(document).ready(function() {
    $("*").hover(
        function(e) { e.stopPropagation(); $(this).addClass("Hover"); },
        function(e) { e.stopPropagation(); $(this).removeClass("Hover"); }
    );
});

答案 1 :(得分:1)

使用纯CSS而不使用任何JavaScript。

table:hover {
    border: 1px solid #000;
}

或者您希望将其应用于表格单元格(<td>),而不是整个表格,请执行以下操作:

table td:hover {
    border: 1px solid #000;
}

答案 2 :(得分:0)

为什么不使用纯CSS?

*:hover
{
  //some code
}

table:hover 
{ 
  border: 1px solid #000; 
}