V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
edire
V2EX  ›  问与答

用原生 js 如何获取到动态添加的元素,并绑定事件

  •  
  •   edire · 2014-10-02 04:14:00 +08:00 via Android · 6028 次点击
    这是一个创建于 3700 天前的主题,其中的信息可能已经有所发展或是发生改变。
    10 条回复    2014-10-19 23:30:47 +08:00
    yyfearth
        1
    yyfearth  
       2014-10-02 04:57:52 +08:00
    你的意思是像用jquery一样么?
    那就用querySelector/querySelectorAll获取
    然后用addEventListener就好了啊
    当然 老IE 的话就要用其他办法了
    不然jquery就没有存在的意义了 除了API方便一些
    airyland
        2
    airyland  
       2014-10-02 05:16:40 +08:00
    1楼不要误导别人。
    请搜索: javascript delegate
    emric
        3
    emric  
       2014-10-02 05:42:47 +08:00
    问的应该是事件委托.
    硬要实现这个功能 DOM3 有 DOM 修改事件.
    yyfearth
        4
    yyfearth  
       2014-10-02 08:36:48 +08:00
    LZ没说这些要移除啊

    动态添加或者移除 那么就是用Delegation
    实现的话 其实就是绑定父元素的event
    然后通过e.target进行判断 可以用el.matches/matchesSelector
    belin520
        5
    belin520  
       2014-10-02 08:41:15 +08:00 via Android
    事件委托on
    其实就是事件的冒泡
    一点击事件在dom节点冒啊冒,你在ducument 上面捕获它,处理。
    $(document).on('click','#header',func);
    这个header就不用管是现在还是未来的元素,因为事件是绑定在document上面
    jsonline
        6
    jsonline  
       2014-10-02 08:43:54 +08:00 via Android
    考点是闭包
    jakwings
        7
    jakwings  
       2014-10-02 14:16:58 +08:00
    用 MutationObserver。
    robbielj
        8
    robbielj  
       2014-10-02 14:19:51 +08:00
    嗯,就是MutationObserver
    这个库大概就能满足lz要求了
    https://github.com/uzairfarooq/arrive

    不依赖jq
    yetone
        9
    yetone  
       2014-10-04 10:42:14 +08:00 via Android
    楼上都在说啥-_-||
    利用事件冒泡,把事件绑定在 document 上,在回调函数里判断事件的 target 就行了。
    各位就别逗楼主了
    edire
        10
    edire  
    OP
       2014-10-19 23:30:47 +08:00
    九楼正解。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5491 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 07:38 · PVG 15:38 · LAX 23:38 · JFK 02:38
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.