Javascript 循环中的闭包:绑定事件侦听器时,循环中声明的变量未正确预设到处理程序函数中
我正在为自动化单元测试编写一个日志函数 html元素结构:Javascript 循环中的闭包:绑定事件侦听器时,循环中声明的变量未正确预设到处理程序函数中,javascript,jquery,Javascript,Jquery,我正在为自动化单元测试编写一个日志函数 html元素结构: <li> <strong> <ol> <li> <strong> <ol> 当我点击时,我想在同一下的进行切换 代码: for(变量i=0,l=logSuites.length;ili:n子项(+(i+1)+”); var caseli=“……”; ... suiteSl.追加(“”+caseli+“”); var caseLiSl=s
<li>
<strong>
<ol>
<li>
<strong>
<ol>
当我点击
时,我想在同一
下的
进行切换
代码:
for(变量i=0,l=logSuites.length;i…”);
var suiteSl=$(“#tests>li:n子项(+(i+1)+”);
var caseli=“ … …”;
...
suiteSl.追加(“”+caseli+“”);
var caseLiSl=suiteSl.children('ol');
var-toggleCases=function(){
caseLiSl.toggle();
};
suiteSl.children('strong').bind('click',toggleCases);
}
问题是每次触发事件时,都会切换最后一个
。。函数toggleCases
中的变量caseLiSl
始终是它最后一次在for
循环中设置的时间
suiteSl.children('strong').bind('click', function(){
$(this).children('ol').toggle();
});
通过这种方式,this
变量引用单击的元素,您只需切换它的直接
子元素我认为您应该这样做
suiteSl.children('strong').bind('click', function(){
$(this).children('ol').toggle();
});
通过这种方式,
this
变量引用单击的元素,您只切换直接的
子元素,这是一个更常见的问题。我们在循环中使用闭包(for或while),它始终保持增量的最后一个值
答案可以在这个问题中找到:这是一个更常见的问题。我们在循环中使用闭包(for或while),它始终保持增量的最后一个值
答案可以在这个问题中找到:这又是一个常见的循环闭包问题
您可能应该阅读以下内容:这也是循环中常见的闭包问题
您可能应该阅读以下内容:强大javascript Closure的常见问题强大javascript Closure的常见问题可能不清楚,但不是的孩子,而是