jquery将li添加到ul的结尾但最后创建的li不被识别为last

时间:2010-02-15 11:20:38

标签: javascript jquery html click live

我有以下代码。按下最后一个li上的按钮,我可以创建新的li。但是,一旦创建,如果我单击创建的最新按钮,则会创建新的li。它似乎并没有认识到最后创建的李作为最后一个李。请有人帮忙。

<html xmlns="http://www.w3.org/1999/xhtml" >

    

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
        <script type="text/javascript">
            $(document).ready(function() {
                $("#mylist :button").click(function() {
                    var text = $(this).val();
                    if (text == "Save") {
                    }
                });

                $("#mylist li:last-child").click(function() {
                $(this).parent().append('<li>' + '<input type = "textbox">' + '<input type = "button" value= "Save">' + '</li>');

                });

            });

        </script>

<div>
<ul id="mylist">
<li id="1">1<button id="Button3">Delete</button> </li>    
<li id="2">2<button id="Button2">Delete</button></li>
<li id="3">3<button id="another_entry">Save</button></li> 
</ul>

<ul id="mylist2">
<li> test1 <button id="Button6">Delete</button></li>
<li> test2<button id="Button5">Delete</button> </li>
<li id="6"><button id="Button1">Delete</button></li> 
</ul>


</div>

2 个答案:

答案 0 :(得分:3)

您需要使用live代替bind,因为绑定只会将元素重复,但live会创建侦听器,它动态地附加事件,甚至是新创建的元素。

您的代码应符合此示例:

$("#mylist li:last-child")
    .live('click', function() {
        // append element
    });

使用jQuery 1.4.0

进行测试

答案 1 :(得分:0)

而不是:

 $(this).parent().append('<li>'.........

尝试

 $("#mylist").append('<li>'.........