如何在javascript中以正确的方式编写此代码

时间:2013-08-07 02:35:15

标签: javascript css

   $("#wedding").click(function() {  
        $(".wedding, .wedding div").addClass("menuclick"); 
    $(".homecoming div, .ourstory div, .weddingcrew div").removeClass("menuclick"); 
    });  

$("#homecoming").click(function() {  
        $(".homecoming, .homecoming div").addClass("menuclick");
    $(".wedding div, .ourstory div, .weddingcrew div").removeClass("menuclick"); 

    });  

$("#ourstory").click(function() {  
        $(".ourstory, .ourstory div").addClass("menuclick");
        $(".wedding div, .homecoming div, .weddingcrew div").removeClass("menuclick"); 

    });  

$("#weddingcrew").click(function() {  
        $(".weddingcrew, .weddingcrew div").addClass("menuclick");
        $(".wedding div, .ourstory div, .homecoming div").removeClass("menuclick"); 

    });  

我为动画css animation.there写了这个代码,有四个项目,当我点击一个项目是动画,其他项目将返回。我需要知道如何简化这段代码。

1 个答案:

答案 0 :(得分:5)

不改变你的html,你可以这样做:

$("#wedding, #homecoming, #ourstory, #weddingcrew").click(function() {
  // remove menuclick class from all elements that currently have it
  $(".menuclick").removeClass("menuclick");
  // now add menuclick just to elements associated with the clicked item
  $("." + this.id).find("div").andSelf().addClass("menuclick"); 
});

这取决于你的元素id与它们所关联的元素上的相应类完全相同的事实。

如果你可以添加一个公共类,对class="menu"等项目说#wedding, #homecoming,那么你可以将初始选择器简化为$(".menu")

P.S。如果您使用的是jQuery v1.8或更高版本,请使用.addBack()代替.andSelf()