JQuery3.0抛出错误设置一个只有一个getter firefox的属性

我已经动态创建了SVG圈,并使用JQuery将它小动画为大圈。 动画在其他JQuery版本中运行良好,并且仅在JQuery 3.0版中引发exception“设置只有getter的属性” 。 我在网上搜索过。 它会导致由于属性没有setterfunction。

_animateCircle: function (element, delayInterval) { var radius = element.getAttribute("r"); var scaleVal; var $ele = $(element); var layer = this; $ele.delay(delayInterval).each(function () { }).animate( { r: radius // if i comment this line, exception not occur. But animation not working }, { duration: 700, step: function (now) { scaleVal = now; } } ); } 

我的问题是为什么这不仅仅适用于JQuery 3.0版。 请告诉我这个。

谢谢你,巴拉提。

编辑,更新

firefox的解决方法,其中jQuery在Tween.propHooks._default.set6571行最后记录错误

 else { tween.elem[ tween.prop ] = tween.now; // logs error } 

您可以创建一个具有值等于r值的属性的对象,这是一个SVGAnimatedLength对象,以及具有动画应该停止的值的属性; 在.animate() step函数调用创建的对象作为jQuery()参数设置属性使用.attr("r", now) ,这似乎在firefox返回相同的结果,铬

 var fx = { _animateCircle: function(element, delayInterval) { var r = element.attr("r"); var radius = {from:r, to:r * 2}; // set `r` to `radius.to` value $(radius).delay(delayInterval).animate({ from: radius.to }, { duration: 700, step: function(now) { element.attr("r", now); } }); } } fx._animateCircle($("circle"), 500)