从另一页添加元素?

时间:2017-07-07 17:16:15

标签: javascript jquery html jquery-load

鉴于此HTML:

  

的index.html:

<div class="tile" data-tilename="test">
    <div class="tileHeader">Tile Name</div>
</div>

  

瓦片content.html:

<div id="test-tile" class="tileContent">
       <!-- lots of stuff here. -->
</div>

我如何才能达到以下目的?

<div class="tile">
    <div class="tileHeader">Tile Name</div>
    <div class="tileContent">
       //lots of stuff here.
    </div>
</div>

目前所有这些都是动态创建的,所以这是我当前的代码:

let $elTile = $('<div/>', {
    class: 'tile'
}).appendTo($elContainer);

let $elTileHeader = $('<div/>', {
    class: 'tileHeader',
    html: tile.header
}).appendTo($elTile);

let $elTileContent = $('<div>').load('tile-content.html #' + tile.name + '-tile');
$elTile.append($elTileContent);

上面的最后两行受到this solution的启发。不幸的是,它增加了额外的<div>我想避免:

<div class="tile">
    <div class="tileHeader">Tile Name</div>
    <div> <!-- I don't want this -->
        <div class="tileContent">
           <!-- lots of stuff here. -->
        </div>
    <div>
</div>

我如何达到理想的解决方案?

有几个类似的问题,但我发现没有解决方案,我的情况略有不同(动态创建的元素)。

2 个答案:

答案 0 :(得分:1)

这是因为你在这里创造了额外的div:

let $elTileContent = $('<div>').load(...)

您应该加载内容,然后添加标题:

//create the tile and add it to the container
let $elTile = $('<div/>', {
    class: 'tile'
}).appendTo($elContainer);

//create the header but do not add it yet
let $elTileHeader = $('<div/>', {
    class: 'tileHeader',
    html: tile.header
})

//load the content into the tile
$elTile.load('tile-content.html #' + tile.name + '-tile', function(){
    //on the "complete" callback, prepend the header
    $elTile.prepend($elTileHeader);
});

快乐编码:)

答案 1 :(得分:0)

你告诉它在这一行给出额外的div:

let $elTileContent = $('<div>).load('tile-content.html #' + tile.name + '-tile')

您需要首先使用tile类对元素进行加载,然后使用.prepend而不是追加标题div元素,以便它叠加在已加载的内容div之上。