У меня есть этот код, и это JavaScript и JQuery:Нельзя использовать переменную внутри события click?
for (thisLooper = 1; thisLooper < 4; thisLooper++) {
if ($("#writeComments"+thisLooper).length > 0) {
$("#writeComments"+thisLooper+",#comments"+thisLooper+", #infoSpan"+thisLooper+"").hide();
$("#toggleCommentForm"+thisLooper).click(function() {
$("#writeComments+thisLooper").slideToggle();
});
}
}
Что он делает:
- Проверьте # writeComments1 существует
- Если он существует, скрыть # writeComments1, # Комментарии1 и # infoSpan1
- Затем, если кто-то нажимает на # toggleCommentForm1, slideToggle # writeComments1
- Сделайте все это для # writeComments2 и его друзей
- ли все это # writeComments3 и это друзья
С выше ничего кода происходит, но если я заменить:
$("#toggleCommentForm"+thisLooper).click(function() {
$("#writeComments+thisLooper").slideToggle();
});
ширина это:
$("#toggleCommentForm"+thisLooper).click(function() {
$("#writeComments1").slideToggle();
});
Это все работает, но естественно, только # writeComments1 slideToggles, даже если я нажимаю # toggleCommentForm2, например.
Мой вопрос в том, почему я не могу использовать переменную «thisLooper» внутри событий click?
'$ (" # writeComments + thisLooper "). SlideToggle();' должно быть '$ (" # writeComments "+ thisLooper) .slideToggle();'? – Stu
^^ вы не используете его как переменную. Но вы могли бы, если бы вы ...;) – mondjunge
Замыкание в цикле зафиксирует его, так что значение индекса сохраняется в обратном вызове. –