jquery - 隐藏 SVG 对象 - jQuery

标签 jquery svg hide

<object id="edge-up" height="26px" width="208px" data="svg/edge-up.svg" type="image/svg+xml"></object>

$("#edge-up").hide('slow');

是否可以使用 .hide('slow') 隐藏 SVG 对象?没有“慢”选项它工作正常。有什么想法吗?

最佳答案

jQuery 可以与 SVG 元素一起使用,但应该理解 HTML 元素的 DOM 接口(interface)与 SVG 的不同。这就是为什么 jQuery 无法使用 fadeOut 等方式对 SVG 元素进行动画处理,甚至无法像您尝试的那样隐藏它们。

要隐藏,请将 SVG 元素的显示属性设置为无。尽管 jQuery 的设计目的不是与 SVG DOM 接口(interface)交互,但它仍然可以处理 SVG 元素所属的 DOM 元素。

  $("#idOfSVGElement").attr("display", "none"); //will hide an element.
  $("#idOfSVGElement").removeAttr("display"); //will show it again.

需要修改: jQuery 的失败源于它试图使用 SVG 元素的 style 属性来隐藏。对于实现该接口(interface)的浏览器而言,style='display:none' 不适用于 SVG 元素。

总结:SVG 和 HTML 元素的 DOM 接口(interface)不同

这也是为什么不能使用 jQuery 创建 SVG 元素的原因,例如:

 $("<rect>").attr( ...etc ...);

因为 jQuery 将创建一个名为 rect 的 HTML 元素,而不是一个 SVG 元素。区别在于实际实现的接口(interface)!很酷吧? :)

关于jquery - 隐藏 SVG 对象 - jQuery,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17531929/

相关文章:

jquery - 传递带有参数的函数以在 jQuery 中悬停

javascript - 如何更改 svg 文件中的路径 ID?

JavaScript 隐藏基于子节点列表的 div 不起作用

javascript - IE 需要多次点击提交

javascript - Bootstrap 3 : wizard with form validation

javascript - canvg 无法在 Edge 中工作

jquery - 页面加载时显示多个 DIVS - 无需悬停

Javafx 2 TreeView - 隐藏根项目

jquery - 在 jQuery 中选择 sibling 的 sibling

javascript - 如何使用 jQuery 切换(隐藏/显示)侧边栏 div