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);
}