0
   $("#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 动画编写了这段代码。有四个项目,当我单击一个项目时,一个项目是动画的,其他项目将返回。我需要知道如何简化此代码。

4

1 回答 1

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")

PS 如果您使用 jQuery v1.8 或更高版本,请.addBack()使用.andSelf().

于 2013-08-07T02:39:55.203 回答