帮我优化一下以下代码$(document).ready(function(){ $("div#taidou1").click(function(){ $("div#shinhong1").toggle(); }); }); </script> <script type="text/javascript"> $(document).ready(function(){ $("div#taidou2").click(function(){ $("div#shinhong2").toggle(); }); }); </script> <script type="text/javascript"> $(document).ready(function(){ $("div#taidou3").click(function(){ $("div#shinhong3").toggle(); }); }); </script> <script type="text/javascript"> $(document).ready(function(){ $("div#taidou4").click(function(){ $("div#shinhong4").toggle(); }); }); </script> <script type="text/javascript"> $(document).ready(function(){ $("div#taidou5").click(function(){ $("div#shinhong5").toggle(); }); }); </script>
时间: 2024-03-11 20:50:11 浏览: 86
可以使用循环来优化这段代码,将重复的部分合并成一个函数,然后使用循环来遍历所有的div元素,绑定click事件,如下所示:
```
$(document).ready(function(){
for(var i=1; i<=5; i++){
$("div#taidou"+i).click(function(){
$("div#shinhong"+i).toggle();
});
}
});
```
需要注意的是,在循环内部的click事件函数中,不能直接使用i,而应使用闭包来避免i的值被修改,可以使用立即执行函数或者let关键字来实现,如下所示:
```
$(document).ready(function(){
for(var i=1; i<=5; i++){
(function(index){
$("div#taidou"+index).click(function(){
$("div#shinhong"+index).toggle();
});
})(i);
}
});
```
或者使用let关键字来声明i,如下所示:
```
$(document).ready(function(){
for(let i=1; i<=5; i++){
$("div#taidou"+i).click(function(){
$("div#shinhong"+i).toggle();
});
}
});
```
这样可以避免闭包带来的额外开销。
阅读全文