1

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

getElements(".board>div").forEach(function(elem){
  elem.addEventListener("click", handleClick);
});

And then in the handler, you need to work with the sender (i.e. this)

function handleClick(){      
  if(this.innerText.toLowerCase() !== "x"){ 
    ...

How do you use this in this scenario without a jshint violation/warning?

Stand__Sure
  • 253
  • 1
  • 13

3 Answers3

2

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

Community
  • 1
  • 1
Web_Designer
  • 72,308
  • 93
  • 206
  • 262
1

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

getElements(".board>div").forEach(function(elem){
  elem.addEventListener("click", handleClick.bind(elem));
});
Serge
  • 6,554
  • 5
  • 30
  • 56
0

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'.

cocco
  • 16,442
  • 7
  • 62
  • 77