【问题标题】:Disable SVG mouseclick event using CSS使用 CSS 禁用 SVG 鼠标点击事件
【发布时间】:2013-09-09 21:08:35
【问题描述】:

我想禁止点击使用 css 的 SVG 元素:

.disabled{
  pointer-events: none;
}

当我使用$(".dasvg") 获取 SVG 元素时,控制台显示我已选择该元素:

[
  <svg width=​"500" height=​"500" class=​"dasvg">​
  <defs>​…​</defs>​
  <defs>​…​</defs>​
  <path class=​"link dragline hidden" d=​"M0,0L0,0">​</path>​
  <g>​…​</g>​
  <g>​…​</g>​
  </svg>​
]

但是,当我尝试执行 $(".dasvg").addClass("disabled") 或 $(".dasvg")[0].addClass("disabled"), thedisabled 之类的操作时,类不会附加到元素上。有没有办法使用 CSS 禁用 SVG 元素?

【问题讨论】:

  • $(".dasvg")[0] 是一个 DOM 元素,而不是一个 jQuery 对象 -- .addClass 不会在它上面工作。

标签: jquery css svg


【解决方案1】:

你可以把css放在svg标签里面:

<svg>​
    <!-- Insert here​ -->
    <style>
        .disabled {
            pointer-events: none;
        }
    <style>
    <!-- The rest of the code -->
</svg>​

【讨论】:

    【解决方案2】:

    jquery 的 addClass 不适用于 SVG 类,因为 jquery 无法处理可动画化的 SVG 类属性。假设元素还没有任何类,只需使用$(".dasvg")[0].setAttribute("class", "disabled")

    【讨论】:

    • $(".dasvg")[0].setAttribute("class", $(".dasvg")[0].attr('class') + " disabled") 甚至可以工作如果它已经有类
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 2011-05-29
    • 2022-01-12
    • 2018-12-27
    • 1970-01-01
    相关资源
    最近更新 更多