使用以下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");
});
});
答案 0 :(得分:3)
尝试:
$(document).ready(function(){
$("#km1,#km2,#km3").click(function(){
$("#"+this.id+"tog").slideToggle("slow");
});
});
答案 1 :(得分:3)
您可以使用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));
}
});
答案 2 :(得分:1)
首先,您只需要一次$(document).ready
来电,这样会稍微优化一下。至于其余部分,它在很大程度上取决于标记的结构。
理想情况下,您不会在元素上使用ID,您只需通过它们的关系来引用它们,例如:
$(document).ready(function(){
$(".top-menu").click(function(){
$(this).find(".sub-menu").slideToggle("slow");
});
});
答案 3 :(得分:0)
你试过这个吗?
$(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");
});
});
});
答案 4 :(得分:0)
如果可能的话,为你所有的&#34;可点击的&#34;添加一个课程。 div并尝试这样的事情:
$(document).ready(function(){
$(".km").click(function(){
id = $(this).attr('id');
$("#"+id+"tog").slideToggle("slow");
});
});