gpt4 book ai didi

javascript - jQuery/JavaScript 中更高效的 switch 语句

转载 作者:行者123 更新时间:2023-11-28 16:29:41 24 4
gpt4 key购买 nike

我正在开发一个应用程序,该应用程序使用 switch 语句来提供自定义动画,具体取决于单击哪个链接来触发动画。看起来需要很多代码才能得到我想要的东西,但我在找出更好的方法来实现它时遇到了一些麻烦。

发生的情况是,当您单击链接时,一个 div 将打开以显示隐藏的内容,而其他 div 将滑到屏幕一侧。有点像定制的 Accordion 。

我的 switch 语句如下所示 - history 参数取自单击链接的 id。 div 存储在名为 rpsObject 的对象中。

switch( history ) {
case "biography" :
$("#" + rpsObject.boxId[1]).myAnimation();
$("#" + rpsObject.boxId[2]).myAnimation({ top : 80 });
$("#" + rpsObject.boxId[3]).myAnimation({ top: 160 });
$("#" + rpsObject.boxId[4]).myAnimation({ top: 240 });
$("#" + rpsObject.boxId[5]).fadeInCloseLink();
break;
case "blog" :
$("#" + rpsObject.boxId[0]).myAnimation();
$("#" + rpsObject.boxId[2]).myAnimation({ top : 80 });
$("#" + rpsObject.boxId[3]).myAnimation({ top: 160 });
$("#" + rpsObject.boxId[4]).myAnimation({ top: 240 });
$("#" + rpsObject.boxId[5]).fadeInCloseLink();
break;
case "diary" :
$("#" + rpsObject.boxId[0]).myAnimation();
$("#" + rpsObject.boxId[1]).myAnimation({ top : 80 });
$("#" + rpsObject.boxId[3]).myAnimation({ top: 160 });
$("#" + rpsObject.boxId[4]).myAnimation({ top: 240 });
$("#" + rpsObject.boxId[5]).fadeInCloseLink();
break;
case "reviews" :
$("#" + rpsObject.boxId[0]).myAnimation();
$("#" + rpsObject.boxId[1]).myAnimation({ top : 80 });
$("#" + rpsObject.boxId[2]).myAnimation({ top: 160 });
$("#" + rpsObject.boxId[4]).myAnimation({ top: 240 });
$("#" + rpsObject.boxId[5]).fadeInCloseLink();
break;
case "images" :
$("#" + rpsObject.boxId[0]).myAnimation();
$("#" + rpsObject.boxId[1]).myAnimation({ top : 80 });
$("#" + rpsObject.boxId[2]).myAnimation({ top: 160 });
$("#" + rpsObject.boxId[3]).myAnimation({ top: 240 });
$("#" + rpsObject.boxId[5]).fadeInCloseLink();
break;
case "contact" :
$("#" + rpsObject.boxId[0]).myAnimation();
$("#" + rpsObject.boxId[1]).myAnimation({ top : 80 });
$("#" + rpsObject.boxId[2]).myAnimation({ top: 160 });
$("#" + rpsObject.boxId[3]).myAnimation({ top: 240 });
$("#" + rpsObject.boxId[4]).fadeInCloseLink();
break;
}

希望我在这里所做的事情应该非常明显!

函数 myAnimation()fadeinCloseLink() 是自定义函数。后者必须在对象的最后一项上执行,完成后会触发所选 div 的自定义动画。函数 fadeinCloseLink() 执行以下操作:

$.fn.fadeInCloseLink = function() {
$(this).animate({ "left" : "640px", "top" : "320px", "height" : "80px" }, 300,
function(){
disFull.animate({ "opacity" : "toggle", "height" : "toggle" }, 500);
});
}

其中 disFull 指的是受影响的 div

希望这足以清楚地表达我的问题。

最佳答案

这是我很快想到的

var historyItems = "biography,blog,diary,reviews,images,contact".split(",")
var currentSettings = [];
for (var i=0;i< historyItems.length; i++) {
if (historyItems[i] != history) currentSettings.push(i)
}
$("#" + rpsObject.boxId[currentSettings[0]]).myAnimation();
$("#" + rpsObject.boxId[currentSettings[1]]).myAnimation({ top : 80 });
$("#" + rpsObject.boxId[currentSettings[2]]).myAnimation({ top: 160 });
$("#" + rpsObject.boxId[currentSettings[3]]).myAnimation({ top: 240 });
$("#" + rpsObject.boxId[currentSettings[4]]).fadeInCloseLink();

关于javascript - jQuery/JavaScript 中更高效的 switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6546165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com