SVG上的.mouseover()事件表现奇怪

4

链接到jsfiddle:http://jsfiddle.net/crismanNoble/gqFdH/2/

基本上,svg会不断改变颜色,而从未触发.mouseout事件。

$(function() {
    $(".icon")
    .mouseover(function() {
               var colors = ["#6F216C", "#F34B0D", "#C50102", "#5DA537", "#F1D81B"];
               var pick = Math.floor(Math.random()*5);
               var color = colors[pick];
               $(this).children().css('fill',color); 
               })
    .mouseout(function() {
              $(this).children().css('fill','black');
    });
});

在Greg Pettit的建议之后,我更新了这个fiddle。原始链接:http://jsfiddle.net/crismanNoble/gqFdH/2/ - Crisman
最好提一下更新;打开它时会感到困惑,但它运行良好。 - Vlad
1个回答

8

使用.mouseenter().mouseleave()替代.mouseover()

fiddle: http://jsfiddle.net/gqFdH/5/

没有查阅API文档,我猜测当鼠标移动到(而不仅仅是进入)区域时,.mouseover()被触发。但这只是我的猜测。我知道.mouseenter().mouseleave()是起作用的。


1
是的,hover是将mouseenter和mouseleave组合在一起的别名。使用任何一个都可以!很高兴能帮助到你。 - Greg Pettit
1
鼠标悬停事件会冒泡,而不是鼠标进入事件。这可能会导致像这样的问题,特别是对于<g>元素。 - Erik Dahlström

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接