Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery中的简单循环迭代器_Jquery - Fatal编程技术网

jQuery中的简单循环迭代器

jQuery中的简单循环迭代器,jquery,Jquery,一个非常简单的问题。如何在简单的for循环中生成以下脚本: for循环的用途与Python中的相同: for i in range(3): a, b = "#toggle-" + str(i), "#toggle-list-" + str(i) 谢谢 在document ready回调中使用for循环进行迭代。确保关闭i,以便它不会在单击事件处理程序中发生更改 jQuery(document).ready(function(){ for(var i = 0 ; i < 3; i+

一个非常简单的问题。如何在简单的for循环中生成以下脚本:

for循环的用途与Python中的相同:

for i in range(3): a, b = "#toggle-" + str(i), "#toggle-list-" + str(i)

谢谢

在document ready回调中使用for循环进行迭代。确保关闭
i
,以便它不会在单击事件处理程序中发生更改

jQuery(document).ready(function(){
    for(var i = 0 ; i < 3; i++){
        (function(i){
            jQuery("#toggle-"+i).click(function(){
                jQuery("#toggle-list-"+i).slideToggle(500);
            });
        })(i)
    }
});
jQuery(文档).ready(函数(){
对于(变量i=0;i<3;i++){
(职能(一){
jQuery(“#切换-”+i)。单击(函数(){
jQuery(“#切换列表-”+i).slideToggle(500);
});
})(一)
}
});
$(文档).ready(函数(){
对于(i=0;i<3;i++)
{  
$('#切换-'+i)。单击(函数(){
$('#切换列表-'+i).slideToggle(500);
});     
};
});
但我强烈建议把id改成名字

而不是切换0;切换1;toggle2只需输入一个名称=toggle 然后,您只需获得如下切换数组:

var-toggles=$('toggle')


然后使用它。

您的代码违反了DRY原则

  • 对于每个事件处理程序,不需要有一个单独的
    ready
  • 您应该考虑使用类和类选择器而不是ID选择器,并使用jQuery的权限来选择目标元素。
  • 在这里使用循环是一个错误的选择/没有必要。大多数jQuery方法都被设计为在幕后迭代集合
  • 以下是使用逗号分隔选择器的示例:

    jQuery(document).ready(function($){
        $("#toggle-0, #toggle-1, #toggle-2").click(function() {
            var num = this.id.replace('toggle-', '');
            $("#toggle-list-" + num).slideToggle(500);
        });
    });
    

    上面的代码片段是缩小原始代码的一种方法,但假设您想向选择器添加10个以上的ID。现在您的代码是不可维护的,没有任何意义。改用类

    您实际上只需要一个文档就绪函数。为什么不给每个ID一个类,然后查询该类并执行$(this).slideToggle(500)?
    $(document).ready(function(){
       for(i = 0; i < 3; i++)
       {  
          $('#toggle-'+i).click(function(){
            $('#toggle-list-'+i).slideToggle(500);
          });     
       };
    });
    
    jQuery(document).ready(function($){
        $("#toggle-0, #toggle-1, #toggle-2").click(function() {
            var num = this.id.replace('toggle-', '');
            $("#toggle-list-" + num).slideToggle(500);
        });
    });