在每个循环中使用setAttributeNS

时间:2019-05-06 08:53:22

标签: javascript jquery svg

我需要更改页面上所有svg的网址。我有以下代码,但是在尝试使用setAttributeNS时出错。

jQuery("[*|href*='icons.svg']:not([href])").each(function () {

  hashedIconUrl = jQuery(this).attr('xlink:href').replace('icons.svg', hashedIcon);
  console.log(hashedIconUrl);

  jQuery(this).setAttributeNS('http://www.w3.org/1999/xlink', 'href', hashedIconUrl);
});

1 个答案:

答案 0 :(得分:1)

您需要从jQuery对象转换为本地DOM对象,才能调用setAttributeNS。通常的方法是通过[0]

jQuery("[*|href*='icons.svg']:not([href])").each(function () {

  hashedIconUrl = jQuery(this).attr('xlink:href').replace('icons.svg', hashedIcon);
  console.log(hashedIconUrl);

  jQuery(this)[0].setAttributeNS('http://www.w3.org/1999/xlink', 'href', hashedIconUrl);
});