(function(){...})()
означает что ты создаёшь функцию, и сразу же её вызываешь.
Два ниже приведённых примера по сути едентичны. За тем исключение что в первом случае у вызываемой функции даже имени своего нет.
//пример 1
(function ( a ) { alert( a ) }) ( "hello" )
//пример 2
test = function ( a ) { alert ( a ) };
test ( "hello" );
В твоём примере автор кода, избавился от ненужного замыкания, при помощи вызова безымянной функции. Если бы он этого не сделал, то все click срабатывали бы с одним и тем же i.
Подробнее здесь