如何在SVG(可缩放矢量图形)中使用jquery?
我在php文件中嵌入了SVG以显示地图。我想在它上面使用jquery,但我不知道如何在其中链接jquery。我希望已经有人做过这样的事了。所以请在这个问题上提供帮助 谢谢 编辑如何在SVG(可缩放矢量图形)中使用jquery?,jquery,svg,Jquery,Svg,我在php文件中嵌入了SVG以显示地图。我想在它上面使用jquery,但我不知道如何在其中链接jquery。我希望已经有人做过这样的事了。所以请在这个问题上提供帮助 谢谢 编辑 我在我的问题上找到了一些有用的信息。我仍然需要知道如何添加一些css或加载时链接事件。SVG使用DOM ie中的元素 <svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="800" height="600"> <desc>
我在我的问题上找到了一些有用的信息。我仍然需要知道如何添加一些css或加载时链接事件。SVG使用DOM ie中的元素
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="800" height="600">
<desc>My SVG</desc>
<defs>
<path fill="#ffffff" stroke="#ffffff" d="M100,100L100,100Z" style="fill-opacity:
0.3; stroke-width: 1; stroke-linecap: round;" fill-opacity="0.3"
stroke-width="1" stroke-linecap="round">
</svg>
如果您正在寻找一个javascript库来操作SVG元素,请查看
.jquery svg库专门用于促进这一点:
如果您希望避免使用库,那么有一些基本的初始挑战和决策需要考虑。p> 首先,您需要指定如何嵌入SVG。在大多数现代浏览器中,SVG可以包含在XHTML“内联”中。其次,更常见的是,可以使用HTML嵌入或对象标记嵌入SVG文档
如果使用第一种方法,那么可以使用宿主HTML文档中的HTML脚本元素来导入jQuery,然后HTML文档中的脚本应该能够以您期望的方式轻松访问内联SVG文档中的元素 但是,如果您使用第二种方法,并且使用对象或嵌入元素嵌入SVG,那么您还需要做出一些决定。首先,您需要决定是否将jQuery导入到- HTML嵌入上下文,使用HTML脚本元素使用HTML脚本元素,或
- SVG嵌入上下文,在SVG文档中使用SVG脚本元素李>
SVG插画测试
$(文档).ready(函数(){
var a=document.getElementById(“alphasvg”);
//向对象添加加载事件侦听器很重要,因为它将异步加载svg文档
a、 addEventListener(“加载”,函数(){
var svgDoc=a.contentDocument;//获取alpha.svg的内部DOM
var svgRoot=svgDoc.documentElement;
//现在我们可以用jquery这样查询东西了
//请注意,我们将svgRoot作为上下文节点传入!
$(“富吧”,svgRoot);
},假);
})
+1,我找到了keith wood图书馆,对我很有用。我发现了一些有用的信息。在开始事件时添加jquery,比如.css,我有一些问题,我需要添加一些加载填充事件。你能告诉我该怎么做吗?我只是想顺便说一下,jQuery SVG库不再被维护,并且与jQuery 1.8(在jQuery 1.7上运行良好)发生冲突。jQuery SVG上次更新是在12月的评论发表两年后,并声称通过jQuery 1.11/2.1兼容。当你的站点不强制使用jQuery时(现在所有浏览器都有、减少等),使用纯Javascript(语法)因此,对于SVG和通用DOM+数据操作,您真正需要的是。旁注:A.contentDocument
将为null
如果HTML和SVG文件位于file://
协议中,则它仅适用于http://
和https://
,我想这是出于安全原因。这并没有回答最初的问题原因如果svg对象是使用embed
标记嵌入的,则此方法不起作用。对于那些进行研究或只是好奇这是否可能的人来说,此方法仍然是一个有用的答案。eQuery不支持驼峰大小写的属性,其中svg中有多个属性,例如viewBox
,您不需要jQuery(现在所有的现代浏览器都有、reduce等)、use。所以,对于SVG和通用DOM+数据操作,您真正需要的是。
$('svg path').remove(); //removes the path.
<html>
<head>
<title>SVG Illustrator Test</title>
<script src="jQuery.js"></script>
<script>
$(document).ready(function(){
var a = document.getElementById("alphasvg");
//it's important to add an load event listener to the object, as it will load the svg doc asynchronously
a.addEventListener("load",function(){
var svgDoc = a.contentDocument; //get the inner DOM of alpha.svg
var svgRoot = svgDoc.documentElement;
//now we can query stuff with jquery like this
//note that we pass in the svgRoot as the context node!
$("foo bar",svgRoot);
},false);
})
</script>
</head>
<body>
<object data="alpha.svg" type="image/svg+xml" id="alphasvg" width="100%" height="100%"></object>
</body>
</html>