使用jquery将子动态添加到ul

时间:2015-11-05 15:05:15

标签: javascript jquery html css

我想通过jquery事件向li添加一个custum ol, 这是我的代码

success: function(data) {
            if (data != ''){
                $ulSub = $("#firstList");
                                $("#Pushtype_destinationList").val(crit1);
                $.each(data.dataa, function (i,item) {
           $str="";

                    for(var key in item){ if(key != 'id'){$str+= item[key]} }
                    $ulSub.append( '<li class="ui-widget-content " id="'+item.id +'" >' +$str+'</li>');

                });
            }
        }

我的html代码如下:

 <ol class="selected" id="firstList">
                <li class="ui-widget-content ">text 1</li>
                <li class="ui-widget-content ">text 2</li>

            </ol>
                

和从第一个ol到第二个ol添加元素li的函数jquery为

    jQuery('ol#firstList li').click(function() {

       $(this).toggleClass('selected');

      $('#result').html($('#firstList .selected').clone())

   });

到目前为止,每件事情都很有效,但是当我通过使用此函数来动态添加新元素时

 ( `for(var key in item){ if(key != 'id'){$str+= item[key]} }
                            $ulSub.append( '<li class="ui-widget-content " id="'+item.id +'" >' +$str+'</li>');

                        });)   

此元素无法添加到第二个<ol id="result>

enter image description here

正如你在这里看到的那样,当我在clic上添加元素text1和text2时,但动态添加的其他元素不是

任何帮助,请

2 个答案:

答案 0 :(得分:4)

之所以发生这种情况,是因为在事件处理程序分配代码运行时,您只将事件处理程序分配给DOM中已存在的项目。

尝试:

jQuery(document).on('click', 'ol#firstList li', function() {
     $(this).toggleClass('selected');
     $('#result').html($('#firstList .selected').clone())
});

查看“.on”的jQuery文档以获取更多详细信息。

答案 1 :(得分:0)

在每个循环之前清除html,如

$ulSub.html('');

PUT同伴代码

success: function(data) {
            if (data != ''){
                $ulSub = $("#firstList");
                $("#Pushtype_destinationList").val(crit1);
                $ulSub.html('');
                $.each(data.dataa, function (i,item) {
                $str="";
                for(var key in item){ if(key != 'id'){$str+= item[key]} }
                    $ulSub.append( '<li class="ui-widget-content " id="'+item.id +'" >' +$str+'</li>');

                });
            }
        }