Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在SVG(可缩放矢量图形)中使用jquery?_Jquery_Svg - Fatal编程技术网

如何在SVG(可缩放矢量图形)中使用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>

我在php文件中嵌入了SVG以显示地图。我想在它上面使用jquery,但我不知道如何在其中链接jquery。我希望已经有人做过这样的事了。所以请在这个问题上提供帮助

谢谢

编辑


我在我的问题上找到了一些有用的信息。我仍然需要知道如何添加一些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脚本元素
如果使用后一种方法,则需要使用较旧版本的jQuery(我认为1.3.2应该可以),因为较新版本使用特性检测,这会破坏SVG文档

更常见的方法是将jQuery导入宿主HTML文档,并从嵌入式上下文检索SVG节点。但是,您需要小心使用这种方法,因为嵌入式SVG文档是异步加载的,因此需要在对象标记上设置onload侦听器以检索宿主元素。有关如何从HTML检索嵌入式SVG文档的document元素的完整描述,请参见以下答案:

一旦拥有了嵌入SVG文档的根documentElement,那么在嵌入HTML文档中使用jQuery进行查询时,需要将其用作上下文节点。例如,您可以执行以下操作(未经测试,但应该可以):


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>