2011-07-02 79 views
12
var $div = $('<div class="error">').appendTo($('#header')); 

創建新元素並將它們添加到DOM時,是否需要結束標記?爲什麼或者爲什麼不?如果我將內容放入我創建的標籤中,我是否只需要結束標記?像這樣:jQuery:創建新元素時,是否需要結束標記?

var $div = $('<div class="error"> Error-Homie! </div>').appendTo($('#header')); 

或者我可以創建一個包含內容的元素,但省略結束標記?好?壞?

var $div = $('<div class="error">').appendTo($('#header')); 
+0

是的,你當然需要。 –

+0

如果你想有效的HTML,那麼你是的! – Ibu

+0

SEEL也[$( ' ')VS $ jQuery中(' ')](http://stackoverflow.com/q/9675487/673991) –

回答

15

雖然它可能工作,如果你不使用結束標籤(或至少自關閉標籤),you should add a closing tag (self-close)(如提到的,對於跨平臺兼容性):

爲確保跨平臺兼容性,代碼片段必須格式良好。

$('<a href="http://jquery.com"></a>'); 

或者,jQuery的允許類似於XML的標記語法(帶或不帶斜線前的空間):其可以包含其他元素的標籤應以結束標記配對

$('<a/>'); 

標籤即不能包含元素,可以快速關閉或不:

$('<img />'); 
$('<input>'); 

這是jQuery的是如何創建的元素:

如果HTML比沒有屬性的單個標籤更復雜,如上例所示,元素的實際創建由瀏覽器的innerHTML機制處理。在大多數情況下,jQuery創建一個新元素並將元素的innerHTML屬性設置爲傳入的HTML片段。當參數具有單個標記(例如$('<img />')$('<a></a>'))時,jQuery使用本機JavaScript函數創建元素createElement()函數。


順便說一句。您還可以將數據作爲第二個參數傳遞:

$('<div />', {'class': 'error', text: 'Error-Homie!'}) 
0

你也許可以做這樣的

$('<div/>',{class:'error'}).html('Error-Homie!').appendTo($('#header')); 
0

您始終需要結束標記才能擁有正確的html。

但是,大多數瀏覽器都會讓這樣的錯誤滑落。儘管這並不是懶惰的理由,但你不應該依賴瀏覽器容忍你的代碼工作。這種容忍能夠顯示出現一些錯誤的網站,而不是故意不正確的代碼。

相關問題