Как в jQuery передать в метод-обработчик события переменную во время инициализации?

Например.
Есть 10 одинаковых кнопок.
Мы получили их массив btn=$('button');
for (var i = 0; i < btn.length; i++) {
btn[i].click(function(event){
alert(i);
})
}

При щелчке получается 10, а надо 0,1,2,3...

Желательно получить не очень мозголомный код.
  • Вопрос задан
  • 3127 просмотров
Решения вопроса 3
for (var i = 0; i < btn.length; i++) {
btn[i].click((function (i){return function(event){ alert(i);}})(i))
}
Ответ написан
iiil
@iiil
Инженер и вэб-дизайнер, рисую.
jsfiddle.net/iiil/48Mat

используйте data-атрибуты
jsfiddle.net/iiil/48Mat/1
Обращаться можно потом по ним же button[data-num="3"] например.
Ответ написан
Satanpit
@Satanpit
Front-end developer
Как раз Ваш случай описывается, почитайте и узнаете почему так происходит.
javascript.ru/basic/closure
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
chigoe
@chigoe
Design, front-end, wordpress
$("button").each(
			function(indx){
				$(this).click(
					function(){
						alert(indx);
					}
				);
			}
		);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы