search

Home  >  Q&A  >  body text

chrome - Javascript 动态创建与删除

<ul>
   <li> content <button>Delete</button></li>
   <li> content <button>Delete</button></li>
   ...
</ul>

我想要做的是,动态增加 <li>content<button>Delete</button></li> ,然后点击 button 能够删除增加的 li ,看到很多的例子,都是对已经创建好的进行删除,这种动态创建的怎么删除呢?
PS:我现在是做一个简单的 Chrome extension, 他要求不能使用 onclick, 说明

高洛峰高洛峰2894 days ago411

reply all(4)I'll reply

  • 高洛峰

    高洛峰2017-04-10 12:49:15

    用事件监听就好了,给动态增加元素的父标签增加click的监听事件就可以对动态增加的元素进行点击回调操作了。我给个jQuery的示例吧(JavaScript是用addEventListener):

    $('ul').on('click', 'button', function(e){
        $(this).parent().remove();
    })
    

    http://jsfiddle.net/mFdHm/

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 12:49:15

    可以把点击事件代理到公共父级元素上。 可以使用jquery的on, delegate来实现。
    如果想使用原生的, 可以为父节点ul添加click事件, 在事件里面获得event, 通过event.target来获得点击的子元素。之后的操作就可以通过target节点来做了。

    reply
    0
  • 大家讲道理

    大家讲道理2017-04-10 12:49:15

    其实jQuery完全支持访问动态创建的元素。但是你必须绑定一个listener在包含动态创建元素的容器上,并且这个容器不能是动态创建的。你可以试试这样做:

    $('ul').on('click', 'li > button', function(){
        $(this).parent().remove();
    });
    

    reply
    0
  • 阿神

    阿神2017-04-10 12:49:15

    典型的委托模式的应用场景,jQuery里面可以用on,live,delegate等函数来实现。可以参考 http://www.css88.com/jqapi-1.9/ 的函数参考来进一步学习。

    reply
    0
  • Cancelreply