Javascript 单击按钮时隐藏css动画后面的div

Javascript 单击按钮时隐藏css动画后面的div,javascript,html,css,Javascript,Html,Css,作为当前时间,我有CSS3动画被触发按钮点击,所有工作正常。它是一个代表植物生命周期的动画,分5个阶段工作,每个阶段显示一个图像和相应的文本 但是,如果我单击第1阶段,然后单击第2阶段,并希望再次单击第1阶段以再次查看支持文本,同时对第2阶段隐藏图像,我似乎无法做到这一点 JSFIDLE为您提供方便: 现阶段实况: Javascript: $(function() { $("#stage1").click(function() { $("#Seed1,#inf

作为当前时间,我有CSS3动画被触发按钮点击,所有工作正常。它是一个代表植物生命周期的动画,分5个阶段工作,每个阶段显示一个图像和相应的文本

但是,如果我单击第1阶段,然后单击第2阶段,并希望再次单击第1阶段以再次查看支持文本,同时对第2阶段隐藏图像,我似乎无法做到这一点

JSFIDLE为您提供方便:

现阶段实况:

Javascript:

$(function() {  
    $("#stage1").click(function() {  
        $("#Seed1,#infoBox1").toggleClass("animate")   
    });  
    $("#stage2").click(function() {  
        $("#Seed2,#infoBox2").toggleClass("animate")   
    });  
    $("#stage3").click(function() {  
        $("#Seed3,#infoBox3").toggleClass("animate")   
    });  
    $("#stage4").click(function() {  
        $("#Seed4,#infoBox4").toggleClass("animate")   
    });
    $("#stage5").click(function() {  
        $("#Seed5,#infoBox5").toggleClass("animate")   
    });
}); 
正在设置动画的HTML段:

<div id="Seed1" class="target">
</div> <!-- end of Seed1 -->
<div id="infoBox1">
Text for stage 1 Text for stage 1 Text for stage 1 Text for stage 1 Text for stage 1 
</div>

假定“animate”是“on”类(看起来是),尝试创建一个重置所有内容的方法,然后为特定元素设置动画:

function resetState() {
     //you can use classes here to make it neater
     $("#Seed1,#infoBox1,#Seed2,#infoBox2,#Seed3,#infoBox3,#Seed4,#infoBox4,#Seed5,#infoBox5").removeClass("animate");  
}
function setStage(stage) {

     var numberOfStages = 5;

     for (i=1; i <= numberOfStages; i++) {
         if (i == stage) {
             $("#infoBox" + i).addClass("animate");
             $("#Seed" + i).addClass("animate");
         } else if (i < stage) {
             $("#infoBox" + i).removeClass("animate");
             $("#Seed" + i).addClass("animate");
         } else {
             $("#infoBox" + i).removeClass("animate");
             $("#Seed" + i).removeClass("animate");
         }
     }

}
示例用法:

$("#stage1").click(function() {  
    resetState();
    $("#Seed1,#infoBox1").toggleClass("animate");   
}); 
$(document).ready(function() {

    $("#stage1").click(function() {  
        setStage(1);  
    }); 

    //stage 2,3,5 etc...

    $("#stage4").click(function() {  
        setStage(4);  
    }); 

});

假定“animate”是“on”类(看起来是),尝试创建一个重置所有内容的方法,然后为特定元素设置动画:

function resetState() {
     //you can use classes here to make it neater
     $("#Seed1,#infoBox1,#Seed2,#infoBox2,#Seed3,#infoBox3,#Seed4,#infoBox4,#Seed5,#infoBox5").removeClass("animate");  
}
function setStage(stage) {

     var numberOfStages = 5;

     for (i=1; i <= numberOfStages; i++) {
         if (i == stage) {
             $("#infoBox" + i).addClass("animate");
             $("#Seed" + i).addClass("animate");
         } else if (i < stage) {
             $("#infoBox" + i).removeClass("animate");
             $("#Seed" + i).addClass("animate");
         } else {
             $("#infoBox" + i).removeClass("animate");
             $("#Seed" + i).removeClass("animate");
         }
     }

}

虽然这几乎符合我的要求,但是否有任何方法可以修改给出的示例,使图像保持(#Seed1),同时#infoBox1,2,3,4,5更改?您可以发送不想重置的图像id,我将在单独的回答中添加它。如果按照建议更改了重置状态,但它仍然一次只显示一个图像,而不是一种进步的风格。(原始问题中的实时链接就是一个例子)好的,我想我现在得到了你想要的-文本bx应该是最后点击的那个,图像应该显示到我们点击的最后一个阶段的所有阶段(种子)。是这样吗?假设点击了阶段1:显示阶段1的文本和图像。单击阶段2:显示阶段2的文本和阶段1和阶段2的图像,依此类推。然而,我仍然希望能够点击任何按钮以任何顺序查看,而之前的种子图像是keptYeah,这就是我的意思。我已经编辑了答案,它应该做你想做的事情。这个编辑过的答案会取代我以前所有的JS吗?