【问题标题】:jQuery attr() fails to set attributejQuery attr() 无法设置属性
【发布时间】:2023-03-09 09:24:01
【问题描述】:

我正在尝试通过 svg 的 transform 旋转图像。这是我的代码:

<svg width="100" height="100"> 
   <image id="trns" transform="rotate(90,50,50)" width="100" height="100" xlink:href="logo.png"/> 
</svg>

这会在页面加载时成功地将logo.png 旋转 90 度。此外,当我在 firbug 的 HTML 选项卡中将 90 更改为不同的数字时,旋转会相应地发生变化。但是当我尝试使用 jQuery 更改值时,没有任何反应:

$('#trns').attr('transform', 'rotate(60, 50,50)');

firebug 做了哪些我的attr 行没有做的事情?

【问题讨论】:

    标签: javascript jquery svg attr


    【解决方案1】:

    在这里工作正常(使用 jQuery 1.6.2): http://jsfiddle.net/niklasvh/k3Grd/

    确保在 DOM 准备好后调用它:

    $(function(){
     $('#trns').attr('transform', 'rotate(60,50,50)');
    });
    

    【讨论】:

    • 问题是我使用的jQuery版本(1.3.2),一旦更改为1.6.2,它就可以了。
    • @Edgar - 严格地说,它不是。但是,这个和你的回答让我检查了问题所在的版本。然后我赞成你的,并接受了这个;)
    • @Majid 您可以随时自己发布答案,然后接受。
    • @lonesomeday - 我知道,虽然我很不情愿。在这种情况下,我认为 working jsfiddle is 是答案。
    【解决方案2】:

    确实很奇怪,这似乎有效

    $('#trns')[0].setAttribute('transform','rotate(20,50,50)')
    

    另外,如果你查看 $('#trns').attr('transform'),你会得到一个对象。。现在没有足够的时间来研究它。

    【讨论】:

    • 这确实很奇怪,显然 1.6.2 中的 attr() 足够复杂,可以以正确的方式操作对象。但是对于我最初使用的 1.3.2,它不起作用。
    【解决方案3】:

    如果您使用的是 jquery >= 1.6,请尝试使用 prop 而不是 attr
    希望这可以帮助。干杯

    【讨论】:

    • 这是一个属性而不是一个属性?
    【解决方案4】:

    .attr() 像这样在 3.1.1 中工作

    .attr({ style: "prop : val; prop : val; prop : val" })
    

    这可能是解决版本问题的一种方法。

    【讨论】:

      猜你喜欢
      • 2016-04-20
      • 2014-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多