javascript - Jquery 多个操作 1 if

标签 javascript jquery

我有以下代码..

    function showNext(opt)  {
        takeAway();
        if(opt == "Picked Up") $("#pickedup").css("display", "");
        if(opt == "Bus to alternate") $("#altad2").css("display", "");
        if(opt == "Walk to alternate") $("#altad1").css("display", "");
    }


function takeAway(){
    $("#pickedup").css("display", "none");
    $("#altad2").css("display", "none");
    $("#altad1").css("display", "none");
}

在这种情况下,如果有人选择公交车替代或步行替代,则会分别显示 altad2 和 altad1​​

但这不是我想要的..

我想要的是,如果有人选择公交车来替代,它会同时显示 altad2 和 altad1​​,如果有人选择步行来替代,它也会显示同样的内容。

有没有一种简单的方法可以做类似的事情

 if(opt == "Bus to alternate") $("#altad2").css("display", "") and $("#altad1").css("display", "");
    if(opt == "Walk to alternate") $("#altad1").css("display", "") and $("#altad2").css("display", "");

最佳答案

更好的方法是创建一个 map ,它将减少代码大小并变得更快。

function showNext(opt)  {
        takeAway()

      var optMap={
             "Picked Up":"#pickedup",
             "Bus to alternate":"#altad2,#altad1",
             "Walk to alternate":"#altad2,#altad1",
              }
           $(optMap[opt]).css("display","") ;       

}
function takeAway(){
    $("#pickedup,#altad2,#altad1").css("display", "none");
 }

将所有 id 保留在一个选择器中,并以逗号分隔。在此它只会创建一个 jquery 对象。

关于javascript - Jquery 多个操作 1 if,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15008872/

相关文章:

javascript - 如何将所有 $ 更改为 jQuery,其中某些变量名称在某些 Jquery 插件中以 $ 开头?

javascript - 在鼠标悬停时显示不同的标题文本(手电筒效果)

jquery - 具有可变高度的 CSS3 过渡?

javascript - 当我悬停它时,td 背景颜色不会改变

jquery - 切换 jquery 实时事件中的问题

javascript - Ember 数据异步关系的聚合

javascript - 如何将 Blob 从 Chrome 扩展程序传递到 Chrome 应用程序

javascript - AngularJS 1.6 : Object printed in Html is not visible (undefined) in controller function

javascript - 如何制作该标签的另一图像(通过拖动),该图像不会影响原始图像

jquery - 如何让 jQuery 选择插件来折叠选择框?