2013-07-08 122 views
2
<object id="edge-up" height="26px" width="208px" data="svg/edge-up.svg" type="image/svg+xml"></object> 

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

是否有可能隱藏SVG對象與.hide( '慢')?它工作正常,沒有'慢'選項。任何想法 ?隱藏SVG對象 - jQuery的

+0

當您嘗試此操作時,它會發生什麼?控制檯中的任何東西? – tymeJV

+0

爲什麼不使用'.fadeOut('slow');' – 2013-07-08 16:56:38

+0

console - 沒有問題,fadeout不能完全工作 – user2537093

回答

2

jQuery可以與SVG元素一起使用,但應該理解HTML元素的DOM接口與SVG的不同。這就是爲什麼jQuery不能使用fadeOut爲SVG元素製作動畫的原因,或者甚至像你正在嘗試的那樣隱藏它們。

要隱藏,請將SVG元素的display屬性設置爲none。雖然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將創建一個HTML元素名稱rect,而不是一個SVG元素。區別在於實際實現的接口!很酷嗎? :)

+0

這不可能是第一部分的正確解釋,因爲style ='display:none' **適用於所有瀏覽器中的SVG元素。 –

+0

謝謝你的擡頭。那麼也許它用來設置style屬性的界面只適用於html元素而不適用於svg?我會仔細檢查,然後編輯答案 – Mzn