我尝试使用 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 中的一个错误?
最佳答案
对于 $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/