Using this in event handler in strict javascript?

前端 未结 3 1832
别那么骄傲
别那么骄傲 2021-01-25 19:49

Suppose you have a routine like the following to wire up click event handlers

getElements(\".board>div\").forEach(function(elem){
  elem.addEventListener(\"cl         


        
相关标签:
3条回答
  • 2021-01-25 20:14

    use one eventhandler

    especially if you have many elements inside your board.

    adding multiple eventlisteners slows down the browser.

    js

    function h(e){
     alert(e.target.textContent)
    }
    document.getElementsByClassName('board')[0].onclick=h
    

    or

    document.querySelector('.board').addEventListener('click',h,false)
    

    html

    <div class="board"><div>1</div><div>2</div><div>3</div><div>4</div></div>
    

    example

    http://jsfiddle.net/3csJ2/

    in your case...

    function h(e){
     e.target.innerText==1||(alert('this is not 1')/*,...*/) 
    }
    

    example 2

    http://jsfiddle.net/3csJ2/1/

    inside the handler function (h) this is the 'board'.

    0 讨论(0)
  • 2021-01-25 20:21

    Why don't you just bind the function with the object?

    getElements(".board>div").forEach(function(elem){
      elem.addEventListener("click", handleClick.bind(elem));
    });
    
    0 讨论(0)
  • 2021-01-25 20:23

    Your use of this is valid. To suppress the this errors in your event handler add /*jshint validthis: true */ to the top of the function.

    Found that here: https://stackoverflow.com/a/16553290/552067

    0 讨论(0)
提交回复
热议问题