动态地将li和div添加到html页面

时间:2015-08-05 18:24:51

标签: javascript jquery html

我有一个列表,我使用ajax调用动态添加到html页面。我正在添加这样的列表项:

Jquery中的

代码:

$.getJSON('getData.php', function(result){
    $.each(result,  function(index, results) {

        $('#myList').append('<li>'+results.title+'</li>');
    });

});

我想要做的是动态地添加一个div来添加li列表。因此,每次添加列表项时,它们都会添加到div中。

所需的输出将是这样的:

<div>
  <li>First Added item</li>
  <li>Second Added item</li>
  <li>Third added itme</li>
</div>

这是我尝试解决的问题:

  $.getJSON('getChapterFilter.php', {name: bookSel}, function(result){

    var appendDiv = false;
    var appendEnd = false;
    $.each(result,  function(index, results) {

        if (appendDiv === false) {
            $('#myList').append('<div>');
            appendDiv = true;
            }
        else {

        $('#myList').append('<li>'+results.title+'</li>');
        }

        if(appendEnd === false) {
            $('#myList').append('</div>');
            appendEnd = true;
            }
     });

  });

我遇到的麻烦是李没有填入列表中。这就是上面代码所发生的事情:

<div></div>
<li>first added item</li>
<li>second added item</li>
<li>third added item</li>

6 个答案:

答案 0 :(得分:2)

$('#myList').append('<div>');

这会将<div></div>附加到#myList

要在div中添加<li>,您必须执行以下操作:

$('#myList > div').append('<li>'+results.title+'</li>');

为了缩短它,你可以这样做:

$.getJSON('getChapterFilter.php', {name: bookSel}, function(result){
    $("#myList").append("<div>" + result.reduce( function(p,c){ return p + "<li>" + c.title + "</li>" }, "" ) + "</div>" );
});

答案 1 :(得分:1)

只需将<div>元素附加到#myList并将其分配给变量。

$.getJSON( 'getData.php', function( result ) {

    var $container = $( '<div>' ).appendTo( '#myList' );

    $.each( result, function( index, results ) {

        $container.append( '<li>' + results.title + '</li>' );

    } );

} );

答案 2 :(得分:1)

为什么不在循环中附加div,然后将div附加到列表中?

实施例

$.getJSON('getData.php', function(result){
    var $myDiv = $('<div>'); // create div

    $.each(result,  function(index, results) {
        $myDiv.append('<li>' + results.title + '</li>'); // append list item to div
    });

    $('#myList').append($myDiv); // append div to myList
});

答案 3 :(得分:0)

将我的评论转到答案:

定位div并追加到那个。现在,您要定位ID =&#39; myList&#39;并将所有内容添加到其末尾。

尝试:

    $('#myList').find('div').append(...) 

增加额外的探索...... .find()所做的是在$(&#39; #myList&#39;)内搜索任何/所有&#39; div&#39;元件(一个或多个)。你需要在这里小心一点,因为如果有一个以上的div那么他们将获得追加。如果这是一个问题,那么您可以使用

进行调整
    $('#myList').first('div').append(...);

    $('#myList').find('div').eq(0).append(...);

或类似。

答案 4 :(得分:0)

一旦您在开头追加<div>,您的网络浏览器就会像“哇,这是无效的HTML因为标签永远不会关闭;我只是快速添加结束标记”并立即关闭你的div标签,导致你看到的输出。要通过这种方法实现您的目标,您需要这样的东西:

var appendDiv = false;
var appendEnd = false;
var myHtml = "";
$.each(result,  function(index, results) {
    if (appendDiv === false) {
        myHtml += '<div>';
        appendDiv = true;
        }
    else {

    myHtml += '<li>'+results.title+'</li>';
    }

    if(appendEnd === false) {
        myHtml += '</div>';
        $('#myList').append(myHtml);
        appendEnd = true;
        }
 });

});

这样,浏览器在完成编写之前不会尝试评估您正在创建的HTML,因此它会正确处理。 (授予,通过字符串手工制作的HTML仍然可能不是最好的方法)

答案 5 :(得分:0)

首先,<li>元素应位于<ul><ol>元素中,而不是IN <div>

要做你想做的事,你应该这样做:

  1. <ul>附加到您的文档中
  2. 选择已添加的<ul>
  3. 然后将<li>...</li>追加到选定的<ul>
  4. 第一个例子:

    var $myList = $('#myList');
    
    $myList.append('<ul/>');
    $myList.find('ul').append('<li>...</li>');
    

    第二个例子:

    var $ul = $('<ul/>');
    
    $ul.appendTo($('#myList'));
    $ul.append('<li>...</li>');
    

    循环更好的方法是:

    $.getJSON('getChapterFilter.php', {name: bookSel}, function(result){
        var $myListWrap = $('#myListWrap'),
            $myList     = $('<ul/>'),
            listData    = '';
    
        $myList.appendTo($myListWrap);
    
        $.each(result, function(index, results) {
            listData += '<li>' +results.title+ '</li>';
        });
    
        $myList.append(listData);
    });