jQuery 是一个快速、简洁的 JavaScript 库,它简化了 HTML 文档遍历、事件处理、动画和 Ajax 交互。在 jQuery 中选择 <object>
标签内的 SVG 元素,可以通过多种方式实现。
<circle>
, <rect>
, <path>
等。<object>
标签内的 SVG 元素假设我们有以下 HTML 结构:
<object id="svgObject" data="path/to/your.svg" type="image/svg+xml"></object>
contents()
方法$(document).ready(function() {
var svgDocument = $('#svgObject')[0].contentDocument;
var svgElement = $(svgDocument).find('svg');
// 现在你可以对 svgElement 进行操作
});
getSVGDocument()
方法$(document).ready(function() {
var svgObject = document.getElementById('svgObject');
svgObject.addEventListener('load', function() {
var svgDocument = svgObject.getSVGDocument();
var svgElement = $(svgDocument).find('svg');
// 现在你可以对 svgElement 进行操作
});
});
问题: 无法获取到 <object>
内的 SVG 元素。
原因: 可能是因为 <object>
标签的 load
事件尚未触发,或者 SVG 文件加载失败。
解决方法:
load
事件监听 <object>
标签的加载完成。<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jQuery SVG Example</title>
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
<object id="svgObject" data="path/to/your.svg" type="image/svg+xml"></object>
<script>
$(document).ready(function() {
$('#svgObject').on('load', function() {
var svgDocument = this.contentDocument;
var svgElement = $(svgDocument).find('svg');
// 示例:改变 SVG 内某个元素的填充颜色
svgElement.find('#someSvgElementId').css('fill', 'red');
}).each(function() {
if(this.complete) $(this).load();
});
});
</script>
</body>
</html>
在这个示例中,我们监听了 <object>
标签的 load
事件,并在加载完成后获取 SVG 文档,然后对 SVG 元素进行操作。这样可以确保在 SVG 文件完全加载后再进行 DOM 操作,避免因加载未完成而导致的错误。
领取专属 10元无门槛券
手把手带您无忧上云