Клонирование JavaScript с помощью for()
Пример это и это не работает. В чем моя ошибка?
var i=1;
for(i; i <=165; i++){
jQuery(".tekAlan"+i).click(function() {
jQuery(".tekAlan"+i).addClass("tekAlanSecildi");
});
}
Благодарю.
3 ответа
Полагаю, вы хотите добавить только к выбранному элементу класс. Тем не менее, он всегда добавляет класс к последнему. Это потому, что ко мне обращаются после конца for, поэтому он всегда содержит 165. Сделайте это, чтобы решить вашу проблему:
var i=1;
for(i; i <=165; i++){
jQuery(".tekAlan"+i).click(function() {
jQuery(this).addClass("tekAlanSecildi");
});
}
jQuery(this)
является ссылкой на элемент, затронутый событием (в этом случае click
)
Вы проходите i
по ссылке, а не по значению, так i
не относится к числу, которое вы думаете, это после запуска цикла. Взгляните на этот простой пример, чтобы понять, что я имею в виду.
В этом случае вы, вероятно, можете просто использовать селектор атрибута и this
:
jQuery('[class^="tekAlan"]').click(function() {
jQuery(this).addClass("tekAlanSecildi");
});
Если вы хотите исправить свой текущий код, вам придется затенить i
с анонимной функцией:
for(var i = 1; i <= 165; i++){
(function(i) {
jQuery(".tekAlan" + i).click(function() {
jQuery(".tekAlan" + i).addClass("tekAlanSecildi");
});
})(i);
}
Хотя это не очень понятно, вы можете попробовать что-то вроде этого
1) добавить класс для всех ваших элементов
2)
$('.someclass').click(function(){
$(this).addClass('someotherclass');
})
Вам не нужен цикл for.