Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.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
如何优化此JavaScript_Javascript - Fatal编程技术网

如何优化此JavaScript

如何优化此JavaScript,javascript,Javascript,我正在使用下面的JavaScript在我的菜单中调出一些信息 是否可以优化它,使我只有一个函数而不是n $(document).ready(function(){ $("#km1").click(function(){ $("#km1tog").slideToggle("slow"); }); }); $(document).ready(function(){ $("#km2").click(function(){ $("#km2tog").slideToggle("slo

我正在使用下面的JavaScript在我的菜单中调出一些信息

是否可以优化它,使我只有一个函数而不是n

$(document).ready(function(){
 $("#km1").click(function(){
   $("#km1tog").slideToggle("slow");
 });
}); 

$(document).ready(function(){
 $("#km2").click(function(){
   $("#km2tog").slideToggle("slow");
 });
}); 

$(document).ready(function(){
 $("#km3").click(function(){
   $("#km3tog").slideToggle("slow");
 });
}); 
尝试:

你试过这个吗

$(document).ready(function() {
    $.each([1,2,3,4,5,6,7,8,9,10], function(i) {
        $("#km" + i).click(function(){
            $("#km" + i + "tog").slideToggle("slow");
        });
    });
});

您可以使用for循环并创建IIFE,以保留
i
的值

$(document).ready(function() {
    for (var i = 1; i <= 3; i += 1) {
        (function(i) {
            $("#km" + i).click(function() {
                $("#km" + i + "tog").slideToggle("slow");
            });
        }(i));
    }
});
$(文档).ready(函数(){

对于(var i=1;i对于一个开始,您只需要一个
$(document)。ready
调用,这样可以稍微优化它。至于其余部分,它在很大程度上取决于标记的结构

理想情况下,您不会在元素上使用ID,您只需通过它们的关系引用它们,例如:

$(document).ready(function(){
    $(".top-menu").click(function(){
        $(this).find(".sub-menu").slideToggle("slow");
    });
}); 

如果可能,将一个类添加到所有“可单击”div中,然后尝试以下操作:

$(document).ready(function(){
    $(".km").click(function(){
        id = $(this).attr('id');
        $("#"+id+"tog").slideToggle("slow");
    });
}); 

给他们一个类,并用它来代替id。
$('.km')。slideToggle('slow');
@MarkWalters类将隐藏除OP之外的所有对象,但只想隐藏特定项。@ZaheerAhmed。对不起,我的意思是。
$('.km')。单击(函数(){$(this.slideToggle('slow'););
看起来属于
$。每个
都有一个硬编码数组,而不是
for
循环?Wut?你知道它在实际示例中是否是硬编码的吗?OP硬编码的3 id。这是一种不好的做法,不应该鼓励。特别是如果建议的替代方法是硬编码简单for循环的所有迭代。你的代码表示:
for(var输入[1,2,3,4,5,6,7,8,9,10])
而不是
for(var i=1;i
$(this.attr('id');
this.id
$(document).ready(function(){
    $(".km").click(function(){
        id = $(this).attr('id');
        $("#"+id+"tog").slideToggle("slow");
    });
});