这是我的代码
<!DOCTYPE html>
<html>
<body>
<svg id="a" height="210" width="400">
<path id="b" d="M150 0 L75 200 L225 200 Z" />
</svg>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
当鼠标从 b 悬停时,我想要那个代码(路径 id="b" d="M150 0 L75 200 L225 200 Z" )。如何使用 jquery 获得它?
您可以使用outerHTML:
var path = $("#b")[0].outerHTML; // <path id="b" d="M150 0 L75 200 L225 200 Z"></path>
Run Code Online (Sandbox Code Playgroud)
然后将其与悬停结合起来:
$("#b").hover(function() {
console.log($(this)[0].outerHTML);
});
Run Code Online (Sandbox Code Playgroud)
正如所指出的,这在 IE 中不起作用,因为它不遵循规范。您可以通过克隆<path>元素,将其附加到 HTML 主体以使其成为 DOM 的一部分,然后从那里获取呈现的 HTML 来解决此问题。
注意:这不是HTML的精确表示,因为它脱离了上下文。例如,它包含xmlns,但由于它是一个 jQuery 对象,您可以根据自己的喜好修改它:
$("#b").hover(function() {
// Create a clone of the <path>
var clone = $(this).clone();
// Append it to the <body>
clone.appendTo("body");
// Wrap it in a containing <div> ... you'll see why in a minute
clone.wrap("<div>");
// Now we grab the innerHTML of that containing <div> - outerHTML won't work
console.log(clone.parent().html());
// Prints: <path xmlns="http://www.w3.org/2000/svg" id="b" d="M 150 0 L 75 200 L 225 200 Z" />
// Now remove our temporary element again...
clone.parent().remove();
});
Run Code Online (Sandbox Code Playgroud)