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

时间:2016-07-18 06:45:51

标签: javascript jquery svg jquery-3

我已经动态创建了SVG圈,并使用JQuery将小圈子动画为大圈。动画在其他JQuery版本中运行良好,并抛出异常"设置仅在JQuery 3.0版中只有getter" 的属性。我在网上搜索过。它将由于属性没有setter功能而引起。

proxy_cookie_domain io.domain.com domain.com

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

谢谢, Bharathi。

1 个答案:

答案 0 :(得分:2)

修改,更新

firefox的解决方法,其中jQuery在elseTween.propHooks._default.set

上的6571处记录错误
else {
      tween.elem[ tween.prop ] = tween.now; // logs error
}

您可以创建一个对象,其属性值等于r值,这是一个SVGAnimatedLength对象,属性具有动画应该停止的值;在step .animate()函数调用创建的对象作为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)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
  <circle cx="200" cy="100" r="50" stroke-width="1" fill="blue" />
</svg>
&#13;
&#13;
&#13;

jsfiddle https://jsfiddle.net/bxmgqnq3/3/

$.fn.attr()替换为.getAttribute()

&#13;
&#13;
var fx = {
  _animateCircle: function(element, delayInterval) {
    var radius = element.attr("r") * 2;
    console.log(radius);
    var scaleVal;
    element.delay(delayInterval).animate({
      r: radius
    }, {
      duration: 700,
      step: function(now) {
        scaleVal = now;
      }
    });
  }
}

fx._animateCircle($("circle"), 500)
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.0.0/jquery.min.js"></script>
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
  <circle cx="200" cy="100" r="50" stroke-width="1" fill="blue" />
</svg>
&#13;
&#13;
&#13;