【发布时间】:2023-03-13 05:30:01
【问题描述】:
我有这段代码,它是 javaScript 和 jQuery:
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、#cmets1 和#infoSpan1
- 然后,如果有人点击#toggleCommentForm1,slideToggle #writeComments1
- 为#writeComments2 和它的朋友们做这一切
- 为#writeComments3 和它的朋友做这一切
上面的代码没有任何反应,但如果我替换:
$("#toggleCommentForm"+thisLooper).click(function () {
$("#writeComments+thisLooper").slideToggle();
});
宽度:
$("#toggleCommentForm"+thisLooper).click(function () {
$("#writeComments1").slideToggle();
});
这一切都有效,但自然只有#writeComments1 slideToggles,即使我点击#toggleCommentForm2。
我的问题是,为什么我不能在点击事件中使用变量“thisLooper”?
【问题讨论】:
-
$("#writeComments+thisLooper").slideToggle();应该是$("#writeComments"+thisLooper).slideToggle();? -
^^ 您没有将其用作变量。但是你可以,如果你愿意的话...... ;)
-
循环中的闭包会修复它,以便在回调中保留索引值。
-
“thisLooper”变量应该与字符串连接(“#writeComments”+thisLooper)。然而,他在闭包方面还有另一个问题。
-
对不起,下面的大括号有一些错别字(现已更正):)
标签: javascript jquery loops for-loop jquery-click-event