javascript - 在版本 1.7.2 之后更新 jquery 后,无法使用 jquery 命名空间选择器

标签 javascript jquery svg namespaces

我尝试使用 jquery 选择命名空间元素,如下所示:

var $svg = $('svg');
var $elements = $('a[xlink\\|href]', $svg);  // Select only a xlink attributes inside svg object
var $allelements = $('a[*|href]', $svg);  // Select all a href attributes inside svg object

对于 jquery v1.7.2,这有效。对于更高版本(v1.8.3 及更高版本),此功能不再起作用。有人知道我现在如何使用 jquery 选择命名空间属性吗?或者这是 jquery 中的一个错误?

示例 svg: https://jsfiddle.net/frontendplace/wytfoq3q/

最佳答案

对于 $elements,您可以使用 .filter()attributes .getNamedItem() 以及参数 “xlink:href”;对于 $allelements 您可以使用 $("a[href]", $svg);

var $svg = $("svg");
// Select only a xlink attributes inside svg object
var $elements = $("a", $svg).filter(function() {
  return this.attributes.getNamedItem("xlink:href") !== null
});
// Select all a href attributes inside svg object
var $allelements = $("a[href]", $svg);

console.log("svg", $svg);
console.log("elements", $elements, $elements[0]);
console.log("all elements", $allelements, $allelements[0]);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="5cm" height="3cm" viewBox="0 0 5 3">
  <desc>Example link01 - a link on an ellipse
  </desc>
  <rect x=".01" y=".01" width="4.98" height="2.98" fill="none" stroke="blue" stroke-width=".03" />
  <a xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="http://www.w3.org">
    <ellipse cx="2.5" cy="1.5" rx="2" ry="1" fill="red" />
  </a>
  <a href="#">anchor</a>
</svg>

jsfiddle https://jsfiddle.net/wytfoq3q/3/

关于javascript - 在版本 1.7.2 之后更新 jquery 后,无法使用 jquery 命名空间选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37847298/

相关文章:

javascript - 如何从 wkWebview/webView 中的 Objective-C 更改 `&lt;input&gt;` 元素属性(例如值)

javascript - 单击 D3.js 隐藏可见元素

html - 如何在 html 文档中显示 SVG 代码?

javascript - BBC 使用什么 slider ?

javascript - Angular 2 : Class Properties Not Updating On params retrieval

javascript - 页面加载后更改线索提示内容

javascript - 如何从 Accordion 中执行 javascript

jquery - 如何在具有多个类的表中按计数重命名表行

javascript - 如何防止仅针对网站图标的 HTTP 请求?

javascript - Package.json - NODE_ENV 到生产/部署