edire
V2EX  ›  问与答

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

  •  
  •   edire · Oct 2, 2014 via Android · 6547 views
    This topic created in 4327 days ago, the information mentioned may be changed or developed.
    10 replies    2014-10-19 23:30:47 +08:00
    yyfearth
        1
    yyfearth  
       Oct 2, 2014
    你的意思是像用jquery一样么?
    那就用querySelector/querySelectorAll获取
    然后用addEventListener就好了啊
    当然 老IE 的话就要用其他办法了
    不然jquery就没有存在的意义了 除了API方便一些
    airyland
        2
    airyland  
       Oct 2, 2014
    1楼不要误导别人。
    请搜索: javascript delegate
    emric
        3
    emric  
       Oct 2, 2014
    问的应该是事件委托.
    硬要实现这个功能 DOM3 有 DOM 修改事件.
    yyfearth
        4
    yyfearth  
       Oct 2, 2014
    LZ没说这些要移除啊

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

    不依赖jq
    yetone
        9
    yetone  
       Oct 4, 2014 via Android
    楼上都在说啥-_-||
    利用事件冒泡,把事件绑定在 document 上,在回调函数里判断事件的 target 就行了。
    各位就别逗楼主了
    edire
        10
    edire  
    OP
       Oct 19, 2014
    九楼正解。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   893 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 20:08 · PVG 04:08 · LAX 13:08 · JFK 16:08
    ♥ Do have faith in what you're doing.