【问题标题】:Can't access an attribute无法访问属性
【发布时间】:2014-09-19 23:43:27
【问题描述】:

我在使用 jQuery attr 命令修改 HTML 元素的属性时遇到问题。我有一个脚本,它插入一个带有属性stdDeviation 的子元素的SVG 元素。您可以看到 D 字母是大写的

当我尝试使用

获取属性时
$("#myparentdiv feGaussianBlur").attr("stdDeviation"), 

无法检索该属性,因为该属性未找到。我尝试在代码中将stdDeviation 属性设置为小写,但是当我尝试使用小写访问它时,它在Internet Explorer 11(在此浏览器上调试)中显示,D 的属性为大写而不是小写。

当我尝试编写属性时,它把第二个属性用小写字母,所以我得到了其中两个属性,一个是小写的 D,一个是大写的。

我不知道该归咎于哪个,jQuery 或 IE11,似乎无法解决这个问题。有什么想法吗?

代码(设置属性后):

<div id="some_id_1">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1">
    <defs>
      <filter id="t3">
        <feGaussianBlur stdDeviation="0" stddeviation="39" />
       </filter>
    </defs>
     <image filter="url(&quot;#t3&quot;)" x="0" y="0" width="350.048px" height="768.75px" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="images/test1.png" />
 </svg>
 </div>

尝试从代码中访问它:

  $("#some_id_1 " + "feGaussianBlur").attr("stdDeviation", radius);

它的作用:将属性设置为小写,而不是我用大写写的。可以看到更新后显示了两次。

【问题讨论】:

  • 很高兴看到你的代码
  • feGaussianBlur 是 ID 还是类? $("#myparentdiv feGaussianBlur")
  • 显然 jquery case 折叠了属性名称以及选择器名称 - 这就是为什么找不到元素(feGaussianBlur 变为 fegaussianblur)。由于它是wontfix 状态,我将依赖于通过纯 JS 对其进行修改。
  • @showdev 解决方案有效。您可以参考其他答案作为答案,我会接受。非常感谢大家

标签: javascript jquery html svg internet-explorer-11


【解决方案1】:

您需要确定 feGaussianBlur 是否是一个类,以这种方式选择它(前面的句号):

$("#myparentdiv .feGaussianBlur").attr("stdDeviation")

如果是ID,这样选择:(前面的#)

$("#myparentdiv #feGaussianBlur").attr("stdDeviation")

希望这会有所帮助!

【讨论】:

  • showdev 的解决方案应该可以解决您的问题。使用常规 javascript 而不是 jQuery。
  • 非常感谢,我现在正在检查它。很高兴知道我不是第一个解决这个问题的人
  • 如果这不起作用,请告诉我,我会考虑另一种解决方案。
猜你喜欢
  • 2018-04-24
  • 2017-04-25
  • 1970-01-01
  • 1970-01-01
  • 2019-05-07
  • 1970-01-01
  • 2016-04-10
  • 2019-08-14
  • 2016-02-11
相关资源
最近更新 更多