javascript - 如何动态重命名列表的附加项目

标签 javascript jquery html

尝试在 html 列表上动态更改名称,我的重命名函数适用于列表中已有的项目,但不适用于附加的项目 我的代码如下:

$(document).ready(function() {
    // Append items functions
    $("#btn2").on('click', function () {
        var name = $('#name').val();
        $('<li>', {
            text: name
        }).appendTo('ol').append($('<button />', {
            'class': 'btn3',
             text: 'Remove'
        })).append($('<button />',{
            'class': 'btn4',
            text: 'Rename'
        }));
  });

  //delete items functions
  $(document).on('click', 'ol .btn3', function () {
      $(this).closest('li').remove();
  });

  //rename function 
  $(".btn4").on('click', function () {
      var rename = "test"//$('#rename').val();

  $(this).closest('li').after($('<li>', {
          text: rename
      }).appendTo('ol').append($('<button />', {
          'class': 'btn3',
          text: 'Remove'
      })).append($('<button />',{
         'class': 'btn4',
         text: 'Rename'
      }))).remove();
   });
});
</script>
</head>

<body>
<div class = "container">
 <ol>
   <li>List item 1 <button class="btn3">remove</button><button class="btn4">rename</button></li> 
   <li>List item 2 <button class="btn3">remove</button><button class="btn4">rename</button></li>
   <li>List item 3 <button class="btn3">remove</button><button class="btn4">rename</button></li>
 </ol>
</div>

<input id = "name" type = "text"> <button id="btn2">Append list items</button>

</body>

非常感谢提示和帮助

最佳答案

您的问题区域是这样的,您的 .btn4 也是动态创建的,因此您需要使用委托(delegate)事件处理程序。

 $(document).on('click', ".btn4", function () {
        var rename = "test" //$('#rename').val();

        $(this).closest('li').after($('<li>', {
            text: rename
        }).appendTo('ol').append($('<button />', {
            'class': 'btn3',
            text: 'Remove'
        })).append($('<button />', {
            'class': 'btn4',
            text: 'Rename'
        }))).remove();
    });

如果 ol 不是在您的原始代码中动态生成的,您可以使用它们

$('ol').on('click', ".btn4", function () { ... }

<强> Demo

关于javascript - 如何动态重命名列表的附加项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19062384/

相关文章:

javascript - 如何突出显示 UIWebView 中第一次出现的字符串?

javascript - NodeJS 环境变量未定义

javascript - 查找最近的最外层导航(多个嵌套导航元素)

javascript - 如何向由对象数组组成的 JSON 对象的根添加属性?

javascript - jQuery:没有动画的 slideDown 令人不快地即时

Javascript RegEx - 强制执行两个最大长度

c# - Firebug 已达到 Firebug 请求大小限制

javascript - 如何使用 if hasClass 条件禁用 jQuery mouseleave 事件?//悬停动画

javascript - jQuery Marquee滑动顶部

html - CSS:如何使用自己的 CSS 将 Twitter Bootstrap 添加到现有网页?