事件代理

作者: 凛冬已至_123 | 来源:发表于2018-07-10 11:22 被阅读0次

    javascript和jQuery的事件代理不同写法

    首先思考一下:为什么我们要用到事件代理???

    • 举个栗子
      父元素下现有四个子元素,我们要监听子元素的增减变化,此时我们就需要监听父元素来到达目的
      再者我们在子元素上绑定了事件,我们可以用addEvenListener监听器对子元素进行监听,但是如果子元素增加了,我们的监听范围没有发生变化,还是原来的四个元素,那么新增元素就无法监听事件,这就需要把监听器发给到父元素上,那么用jQuery和JavaScript怎么实现呢
      HTML
    <div class="box">
      <ul>
        <li>1</li>
        <li>2</li>
        <li>3</li>
        <li>4</li>
      </ul>
    </div>
    <input id="ipt" type="text"> <button id="btn">添加</button>
    <div id="wrap">
    </div>
    <script>
    $('#btn').on('click', function(){
      var value = $('#ipt').val()
      $('.box>ul').append('<li>'+value+'</li>')
    })
    </script>
    

    JavaScript

    
    document.querySelector('.box ul').addEventListener('click', function(e){
      console.log(e.target)
        if(e.target.tagName.toLowerCase() === 'li'){
            document.getElementById('wrap').innerText=e.target.innerText
        }
    })
    

    记住e.target.tagName.toLowerCase()

    • e.target是点击事件的html<li>2</li>
    • e.target.tagName='LI'
    • toLowerCase()是大写变小写
      jQuery
    $('.box ul').on('click', 'li', function(){
      var str = $(this).text()
      $('#wrap').text(str)
    })
    
    • 这个不解释,不懂得直接查,非常简单

    相关文章

      网友评论

        本文标题:事件代理

        本文链接:https://www.haomeiwen.com/subject/jukfpftx.html