Javascript Curry + Usecase

by 1UnitedPower

HTML

<p>Foo</p>
<p>Foo</p>
<p>Foo</p>
<p>Foo</p>
<p>Foo</p>
<p>Foo</p>

CSS

p {
  counter-increment: pes;
}

p::before {
  content: counter( pes ) '. ';
}

JavaScript

Function.prototype.curry = function () {
  if (arguments.length === 0) {
    return this;
  }
  var method = this;
  var args = Array.prototype.slice.call(arguments,0);
  return function () {
    return method.apply(this, args.concat( Array.prototype.slice.call(arguments,0) ) );
  };
};

var pes = document.getElementsByTagName('p');

for (var i=0, l=pes.length; i < l; i+=1){
  pes[i].addEventListener('click', (function(number, event){
    alert('Paragraph #'+number+' clicked');
    event.target.style['background-color'] = 'yellow';
  }).curry(i+1), true);
}