2016-04-23 29 views
1

這段代碼在.tile div之外創建了一個ul,但我需要在裏面。試圖用jquery創建div> ul append

$(container).append(
'<div class="tile" />' + '<ul class="layer"></ul>' + '</div>' 
); 

RESULT:    
<div class="tile"></div> 
<ul class="layer"></ul> 

TRYING TO GET: 
<div class="tile"> 
<ul class="layer"></ul> 
</div> 

回答

2

帶班 「稱號」 的DIV是使用自結束標記<div ... />

做到這一點,而不是

$(container).append(
'<div class="tile">' + '<ul class="layer"></ul>' + '</div>' 
); 

或者做這樣的事情

var content = $('<div>') 
    .addClass('title') 
    .append(
     $('<ul>').addClass('layer') 
    ); 
$(container).append(content); 
1

你可以附加一個元素:

$('container').append($("div").addClass("tile").append($('ul').addClass("layer"))); 

你正在創建並添加元素,所以知道你可以這樣做:

var tile = $("div") 
       .addClass("tile") 
       .append(
        $('ul') 
        .addClass("layer") 
        .append($("li").text("first in list")) 
        .append($("li").text("second in list")) 
      ); 
$('container').append(tile); 

See more examples in doc file

+0

$('。title')'不存在於DOM中。它必須先創建。 – Dhiraj

+0

哦!更新。謝謝。 – Iro

0

你以斜線關閉.title元素。這是一種「速記」,用於告訴HTML,您希望在創建元素後馬上關閉該元素。改爲嘗試以下內容。

'<div class="title">' + '<ul class="layer"></ul>' + '</div>' 

我發現,而尋求這個問題的答案有趣的是,document.write不會從這種行爲受到影響,所以也許它的東西與jQuery如何解析HTML VS瀏覽器/解釋器。

0

另一種方式來得到的結果是:

$(container).append('<div class="tile" />').children('.tile').append('<ul class="layer"/>'); 

或者你可以使用:

$(container).append(function(index, html) { 
    return $('<div class="tile" />').append('<ul class="layer"/>'); 
}); 

或者:

var eleToAppend = $('<div class="tile" />').append('<ul class="layer"/>'); 
$(container).append(eleToAppend); 
0

非常簡單

嘗試以下代碼一次: -

$(container).append('<div class="tile"><ul class="layer"></ul></div>');