2014-09-12 63 views
0

这是我在这里的第一个问题,所以请耐心等待。我正在开发一个小型项目,最近我发现了一个以前没有的特殊问题。Chrome上的jQuery animate()37.0.2062.120 m/Webkit?

在项目中,我用我的祖国罗马尼亚的不同区域进行选择的小地图。我使用Raphael.js库和jQuery/UI实现了这一点。它看起来像这样:

http://s28.postimg.org/pzg3gaiod/output_Cuap_Ye.gif

的想法是,当你选择它会动态着色,添加到区域中的载体的区域。简单。因此,对于每个区域(即声明为拉斐尔库理解的路径和油漆),我有一个小功能:

function clickableMinimapRegions(st, regio) { 
st[0].style.cursor = "pointer"; 
st[0].onclick = function() { 
    if ($.inArray(regio, regions) != -1) { 
    regions.splice($.inArray(regio, regions), 1); 
    st.animate({ 
    fill: "#FFFFFF" 
    }, 0); 
    } else { 
    regions.push(regio); 
    st.animate({ 
    fill: "#e6e6e6" 
    }, 0); 
    } 
}; 
} 

然后,我有这样的HTML:

<ul class="element-menu drop-up"> 
<li> 
    <a id="toggle" class="dropdown-toggle bg-lime text-shadow button shadow"> 
    <img src="../img/regions.png"> 
    </a> 
    <div id="content" class="dropdown-menu bg-steel" data-role="dropdown"> 
    <div id="minimap" class="minimap"></div> 
    </div> 
</li> 
</ul> 

我使用的Metro UI CSS库,它是一个简单的下拉菜单。但它的行为是在点击时自动关闭。所以对于我所做的:

$("#minimap").click(function (event) { 
event.stopPropagation(); 
}); 

http://s28.postimg.org/trltqsu19/Captura3.png

此菜单在屏幕上的单张地图的底部,地图的背景和这个下拉是在地图上。事情是,如果地图没有加载,比起来还好。如果加载了地图图块,则会发生某些情况,防止点击时区域被着色。

谢谢。


溶液中发现: Force DOM redraw/refresh on Chrome/Mac

回答

0

jQuery's .animate()第二个参数是持续时间,以毫秒为单位。将它设置为0后,我宁愿说在其他浏览器中看到的行为是错误的,并且您应该期望在没有动画的情况下立即更改属性。

st.animate({ 
    fill: "#FFFFFF" 
    }, 0); 
    // ^---- duration 

尝试改变,为一个更大的值(400毫秒是默认值)

这里的显示差异小提琴:http://jsfiddle.net/exrj973b/

+0

@ enr00ted在一个侧面说明,[拉斐尔的'elt.animate( )'的文档(http://raphaeljs.com/reference.html#Element.animate)说同样的事情 – blgt 2014-09-12 22:44:22

+0

我不得不用这个,$('#parentOfElementToBeRedrawn')。隐藏()。显示(0 );我也更新了我的问题的解释,因为现在我怀疑有重绘/刷新问题。 – enr00ted 2014-09-12 22:52:25

+0

那么有[这个问题](http://stackoverflow.com/questions/8840580)哪些引用确切的重绘问题(可能你得到你的解决方案?)。如果这解决了您的问题,我建议将其标记为重复或将其作为答案添加到此处并包括链接,如果您认为它的相似程度不够重复(可能对其他人有帮助) – blgt 2014-09-12 23:06:38