2012-09-06 51 views
2

我在谷歌瀏覽器的jquery append方法有一個奇怪的問題,它不寫一個結束標記,當元素爲空時,但如果元素包含一個字符。jquery append()不寫結束標記

如果我用這個代碼:

$('#workZone .canvas').each(function(i) { 
     $(this).append('<canvas id="test"></canvas>'); 
    }); 
} 

我得到這個標記:

<canvas id="test"> 

如果我用這個代碼:

$('#workZone .canvas').each(function(i) { 
     $(this).append('<canvas id="test">i</canvas>'); 
    }); 
} 

的我得到了我」 d期望得到標記:

<canvas id="test">i</canvas> 

我想要結束標記,顯然,但不必包括一次性字符。到底是怎麼回事?

這裏是一個的jsfiddle測試案例:http://jsfiddle.net/YSDnk/

謝謝!

+1

請問您可以在jsfiddle上重現嗎? – zerkms

+0

像使用它應該使用它一樣:) _當作者使用畫布元素時,他們必須**也提供內容,當呈現給用戶時,傳達與位圖畫布基本相同的功能或用途。該內容可以作爲畫布元素的內容放置。 canvas元素的內容(如果有)是元素的後備內容._ [canvas](http://dev.w3.org/html5/spec/the-canvas-element.html#the-canvas-element) – Andreas

+0

同一個div發生。 – fonZ

回答

1

試試這個:

$(this).append('<canvas id="test"><!-- //comment --> </canvas>'); 

你應該把一個HTML註釋中的空白空間。 這樣結束標籤將顯示。

+0

這並沒有解決他所遇到的問題。他不想顯示角色,他想要顯示結束標記。 – ajon

+0

多數民衆贊成正是它會做什麼,評論被忽略,即使它存在,但它似乎有時需要。它會顯示結束標記。 – fonZ

+0

好吧,我認爲這是最好的迴應,但要理解安德烈亞斯對我的問題的迴應以及acolchado的回答。可能發生的情況是,Chrome網絡檢查員正在認識到標記在技術上是無效的,因此即使它確實存在於瀏覽器內存中的DOM中,也不顯示結束標記。 –

0

如果你使用什麼:

$(this).append('<canvas id="test"/>'); 

這應該是等同於你所擁有的,所以我不知道爲什麼它會工作,我剛剛得知測試所有quircks。

1

不確定你是如何驗證這一點的,但你得到一個完整的標籤與你的初始代碼。當我看着督察看到你所看到的,但如果在控制檯中運行以下命令:

console.log($("#workZone .canvas").html()) 

在打印出來,你會看到完整的HTML作爲有效和正確關閉。

1

這與之前發佈的解決方案相同,但標籤之間留有空白,以防評論無法解決。

$(this).append('<canvas id="test">&nbsp</canvas>');