代码之家  ›  专栏  ›  技术社区  ›  THE JOATMON

从另一个页面附加元素?

  •  0
  • THE JOATMON  · 技术社区  · 9 年前

    index.html:

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

    tile-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 回复  |  直到 9 年前
        1
  •  1
  •   THE JOATMON    9 年前

    这是因为你在这里自己创建了一个额外的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);
    });
    

    快乐编码:)

        2
  •  0
  •   Travis Acton    9 年前

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

    您需要首先使用tile类对元素进行加载,然后对header div元素使用.prepend而不是append,以便它堆叠在加载的content div之上。