<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 接口与 SVG 的不同。这就是为什么 jQuery 不能使用 fadeOut 为 SVG 元素设置动画,甚至不能像你试图做的那样隐藏它们。
要隐藏,请将 SVG 元素的显示属性设置为无。尽管 jQuery 不是为与 SVG DOM 接口交互而设计的,但它仍然可以处理 SVG 元素所具有的 DOM 元素。
$("#idOfSVGElement").attr("display", "none"); //will hide an element.
$("#idOfSVGElement").removeAttr("display"); //will show it again.
需要修改: jQuery 的失败来自试图使用 SVG 元素的样式属性隐藏的事实。就实现接口的浏览器而言,style='display:none' 不适用于 SVG 元素。
总结:SVG 和 HTML 元素的 DOM 接口是不同的
这也是为什么不能使用 jQuery 创建 SVG 元素的原因,例如:
$("<rect>").attr( ...etc ...);
因为 jQuery 将创建一个名为 rect 的 HTML 元素,而不是一个 SVG 元素。不同的是实际实现的接口!酷吧?:)
我没有找到直接隐藏 SVG 的方法,但我是这样做的,它可以工作:
<span class="test-hide">
<object id="edge-up" height="26px" width="208px" data="svg/edge-up.svg" type="image/svg+xml"></object>
</span>
//Your code jQuery here
$('.test-hide').css('display', 'none');