javascript - 如何允许 svg 在链接中可点击

标签 javascript html css svg

我有以下 html:

<a class="delete show-modal" href="#;">
    <svg x="0px" y="0px" width="12px" height="12px" viewBox="0 0 10 10" focusable="false"><polygon class="a-s-fa-Ha-pa" fill="#969696" points="10,1.01 8.99,0 5,3.99 1.01,0 0,1.01 3.99,5 0,8.99 1.01,10 5,6.01 8.99,10 10,8.99 6.01,5 "></polygon></svg>
</a>

目前,我无法单击链接来触发弹出显示。有没有办法在不使用 javascript 的情况下使 svg 成为“链接文本”的一部分(例如,仅使用 css 或更改 html),或者我可以在这里做什么?

此外,这是我触发弹出窗口的方式:

$(document).on('click', function(e) {

    var clickedElement = $(e.target);
    $this = clickedElement;
    if ($this.hasClass('show-modal')) {

        ...
    }

});

换句话说,我相信弹出窗口没有被触发,因为点击的元素显示为 svg 而不是 a

最佳答案

你的问题是 svg 是点击的目标,它没有你正在寻找的类。要解决此问题,您可以将 show-modal 类添加到 anchor 内的所有元素,或者简单地添加此 CSS:

.show-modal *{
  pointer-events: none;
}

pointer-events CSS 属性设置在什么情况下(如果有的话)特定图形元素可以成为鼠标事件的目标。这是有关 pointer-events 的更多信息.

看这个片段:

$(document).on('click', function(e) {
  var clickedElement = $(e.target);
  $this = clickedElement;
  if ($this.hasClass('show-modal')) {
    alert('it got clicked');
  }
});
.show-modal * {
  pointer-events: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<a class="delete show-modal" href="#;">
  <svg x="0px" y="0px" width="12px" height="12px" viewBox="0 0 10 10" focusable="false"><polygon class="a-s-fa-Ha-pa" fill="#969696" points="10,1.01 8.99,0 5,3.99 1.01,0 0,1.01 3.99,5 0,8.99 1.01,10 5,6.01 8.99,10 10,8.99 6.01,5 "></polygon></svg>
</a>

关于javascript - 如何允许 svg 在链接中可点击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52955873/

相关文章:

javascript - 如何使用 anchor 标记与 $stateProvider 重定向到 Angular js 中的另一个页面?

javascript - 如何使用 sequelize 验证 Node 应用程序中的业务规则?

html - 通过 CSS 在 img 顶部的水平和垂直线

html - 如何调整图像大小,使它们与 CSS 完美匹配?

javascript - 基于所选复选框的渲染属性

php - Twig 不显示带有空格的字符串

javascript - Jquery动态表不工作

html - 可拖动面板卡在 CSS 设置中

javascript - 在显示另一个元素时隐藏一个元素?

javascript - Angularjs for循环与ng-repeat奇怪的问题