javascript - 我不知道如何将切换转换转换为没有动画的隐藏/显示

标签 javascript jquery css html toggle

我有一个按我想要的方式工作的幻灯片版式。我不知道如何将 toggleSlide 更改为简单的点击隐藏显示。我创建了一个容器,其中有两个链接可以在其他容器中滑动。我需要将功能更改为不滑动,而只是在单击时出现和消失。我不知道如何更改功能。

HTML

<div class="modhidden">Here I am !

<!--<a href="#" class="modslide">Update</a>-->

  <a href="#" class="modslide col-xs-12 left-btn btn btn-primary">Update</a>

</div>

<div class="modhidden2">Here I am AGAIN!

<!--<a href="#" class="modslide2">Update</a>-->
  <a href="#" class="modslide2 col-xs-12 left-btn btn btn-primary">Update</a>

</div>

<div class="modleft">Left panel

<a href="#" class="modslide">Show ONE</a>

<a href="#" class="modslide2">The other ONE</a>

</div>

<div class="modclear"></div>

CSS

.modleft, .modhidden, .modhidden2 {
    float: right;
    width: 100%;
    height:350px;
}

.modhidden, .modhidden2 {
    width:100%;
    z-index:2;
    position:absolute;
    right:-1000px;
    background:#f90;
    color:#000;
}

.modleft {
    width:100%;
    float: left;
    height:350px;
    background: pink;
    color: #000;
}

.modclear {
    clear:both;
}

JS

$(document).ready(function(){
    $('.modslide').click(function(){
    var hidden = $('.modhidden');
    if (hidden.hasClass('visible')){
        hidden.animate({"right":"-1000px"}, "slow").removeClass('visible');
    } else {
        hidden.animate({"right":"0px"}, "slow").addClass('visible');
    }
    });

    $('.modslide2').click(function(){
    var hidden2 = $('.modhidden2');
    if (hidden2.hasClass('visible')){
        hidden2.animate({"right":"-1000px"}, "slow").removeClass('visible');
    } else {
        hidden2.animate({"right":"0px"}, "slow").addClass('visible');
    }
    });
});

JSFIDDLE

https://jsfiddle.net/galnova/jgyt1svb/

最佳答案

我建议您只使用一个类而不是两个。而不是 modslide 和 modslide2,只需使用 modslide。此外,不要添加/删除类来跟踪状态,而是尝试 jquery 的 toggle() 函数。

<div class="modhidden">Here I am !

<!--<a href="#" class="modslide">Update</a>-->

  <a href="#" class="modslide col-xs-12 left-btn btn btn-primary">Update</a>

</div>

<div class="modhidden">Here I am AGAIN!

<!--<a href="#">Update</a>-->
  <a href="#"  col-xs-12 left-btn btn btn-primary">Update</a>

</div>

<div class="modleft">Left panel

<a href="#" class="modslide">Show ONE</a>

<a href="#" class="modslide">The other ONE</a>

</div>

<div class="modclear"></div>


.modleft, .modhidden {
    float: right;
    width: 100%;
    height:350px;
}

.modhidden {
    width:100%;
    z-index:2;
    visibility: hidden;
    position:absolute;
    background:#f90;
    color:#000;
}

.modleft {
    width:100%;
    float: left;
    height:350px;
    background: pink;
    color: #000;
}

.modclear {
    clear:both;
}

.visible {
    visibility: visible;
 }


$(document).ready(function(){
    $('.modslide').click(function(){
         $(this).toggle(0);
    });
});

似乎这样更容易维护,因为只有一个函数需要更新。此外,性能可能更高(我还没有测试过),因为您没有从 DOM 中添加/删除类的开销。

关于javascript - 我不知道如何将切换转换转换为没有动画的隐藏/显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45227697/

相关文章:

php - JQuery ajax 请求 - echo 不会输出结果

javascript - 没有中间证书的 SSL 会导致签名的 APK 无法加载外部 CSS/JS 吗?

html - 如何强制DIV占用父级的高度

javascript - Material-UI 样式 ThemeProvider 错误 : TypeError: Cannot read property 'primary' of undefined

javascript - jQuery:将 setIntervals 分配给数组时出现问题

javascript - 计算给定输入的出现次数

html - 如何增加我的背景图片和位置按钮的高度

javascript - 将 Tumblr 嵌入博客的最佳方式

javascript - 为什么我的 Angular 2 服务对我的应用程序不可见?

javascript - 根据url新建背景