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

时间:2016-06-15 23:08:04

标签: 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/

1 个答案:

答案 0 :(得分:1)

对于$elements,您可以使用参数.filter()的{​​{1}},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]);

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