在SVG中获取锚点元素

杰森·格雷(Jason Gray)

我的网站上有一个svg,用于选择美国的州。格式为:

<svg...>
  <a xlink:href="...">
    <polygon ...><title>{stateName}</title></polygon>
  </a>
</svg>

在试图弄清楚为什么单击链接导致同一站点上其他脚本出现问题之后,经过数小时的头痛之后,我将问题范围缩小到当目标是svg的锚点时未传递给那些函数的事件。

因此,我创建了一个没有其他脚本的单独页面,并通过创建以下功能进行了实验:

<script type="text/javascript">
(function($){
  $(document).ready(function(){
      $('svg a').click(function(event){
          if(event.target.tagName == 'polygon'){
              var target = $(this).parent();
              alert('target: ' + dump(target));
          }else{
              alert('event: ' + dump(event.target));
          }
      });
  });
})(jQuery);
</script>

注意:dump()函数是一个自定义函数,可输出对象和数组的内容。

我的代码的第一个版本仅输出event.target.tagName,尽管我绑定单击的对象是锚点,但始终为“多边形”。因此,我对其进行了修改,以获取多边形的父对象,但这会返回svg。就像锚点不存在一样。

为什么我似乎看不到该函数的事件不包含对锚的任何引用?如果锚点位于div内,如何使它表现出类似的效果?

我尝试了一个jQuery SVG插件,但没有执行任何操作。

TL; DR /澄清问题不是锚不起作用,单击它会将您带到xlink:href中定义的页面。但是任何绑定到单击事件的jQuery代码,这些事件在单击svg中的这些锚点时都会触发,或者事件未定义或不包含预期的锚点对象数据。

如何获得这些锚点的适当事件对象?

编辑:最终让jsfiddle加载:http : //jsfiddle.net/fja4Lt0L/

当前在不同浏览器中的行为的说明:

  • FireFox:问题描述
  • Chrome / Safari:完全不执行任何操作
  • IE:无论链接到click事件的脚本如何,都遵循该链接

这些都不是脚本预期的行为,也不是编码人员预期的行为。

罗伯特·朗森

在SVG中,仅图形元素(线,矩形等和文本)可以成为事件的目标。如果在容器(例如<g><a>元素)上指定它,则其所有子项均成为目标。

只需反复调用.parentElement(如果您使用的是原始DOM)或.parent()(如果您使用的是jQuery)目标上的任何对象,直到获得锚点元素。

这是一个示例或使用jquery和.parent

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SVG堆栈,锚点元素和HTTP提取

来自分类Dev

WPF中的码头和锚点

来自分类Dev

获取锚元素的文本值

来自分类Dev

HtmlUnit-无法从div获取锚点

来自分类Dev

jsPlumb-如何获取锚点的位置

来自分类Dev

在嵌套的Divs中获取锚点InnerText

来自分类Dev

将SVG多边形链接到锚点

来自分类Dev

svg锚点动画

来自分类Dev

如何获取网站的最后一个锚点元素

来自分类Dev

CSS变换旋转动画不适用于Firefox中的锚点元素

来自分类Dev

从网址中删除锚点

来自分类Dev

获取锚点以填充父级中的剩余区域

来自分类Dev

获取锚点的下一个元素

来自分类Dev

如何在放置在不同模板中的元素上包含锚点?

来自分类Dev

如何在剑道列模板中为元素设置弹出位置的锚点

来自分类Dev

在Rainbow Wheel中无法单击锚点元素

来自分类Dev

使用jQuery在SVG中获取锚的href值

来自分类Dev

PySide / PyQt是否可以在QTextBrowser中获取锚点的字符串

来自分类Dev

HtmlUnit-无法从div获取锚点

来自分类Dev

jQuery在子元素中查找并替换锚点

来自分类Dev

在元素被隐藏/取消隐藏的函数中,使用javascript移动(而不滚动)至锚点

来自分类Dev

链接到框架中的锚点

来自分类Dev

更改特定div中的锚点

来自分类Dev

从网址中删除锚点

来自分类Dev

获取锚点以填充父级中的剩余区域

来自分类Dev

单击锚点元素时更改span元素的文本

来自分类Dev

防止锚点内单击DOM生成的元素时发生锚点行为

来自分类Dev

如何在单击锚点标记的angular 2中获取特定父元素的类?

来自分类Dev

在 Markdown 中稳健地生成锚点