javascript - 如何使此 slideDown/slideUp 与不同的类一起正常工作?

标签 javascript jquery html css

我正在尝试学习 jQuery,但我似乎无法弄清楚以下内容。

当页面加载时,div 1 应该是可见的。
当我单击菜单按钮时,div 1 应该隐藏,单击的 div 应该替换它。

我希望 div 1 有一个不同的类分配给它(这可以在没有 CSS 的情况下完成吗?)并且当您选择一个从非事件到事件时切换这 2 个类。

这在 jQuery 中如何实现?

https://jsfiddle.net/3kvfy4oa/

HTML

<div id='container'>
<div id='menu'>
    <ul id='List'>
        <li><a href="#content1">Menu 1</a></li>
        <li><a href="#content2">Menu 2</a></li>
        <li><a href="#content3">Menu 3</a></li>
    </ul>
</div>

<div id='content'>
    <div id=content1 class="">
    <h1>Div 1</h1>
    Lorem ipsum dolor sit amet
    </div>
    <div id=content2 class="disactivated">
    <h1>Div 2 </h1>
    Lorem ipsum dolor sit amet
    </div>
    <div id=content3 class="disactivated">
    <h1>Div 3</h1>
    Lorem ipsum dolor sit amet
    </div>
</div>

CSS

div#menu{
    width:150px;
    left:-180px;
    position: absolute;
    z-index: 100;
}
div#menu ul li{
    margin-bottom: 1px;   
    position: relative;
    float : left; 
}
div#menu ul#List li a{
    width: 150px;
    height: 22px;
    background-color: #00293E;
    /*color: #ffffff;*/
    text-decoration: none;
    display: block;
    padding: 7px 10px 0 0;
    text-align: right;
    font-weight: bold;
    cursor: pointer;
    cursor: hand;
}

#content{
    left:50px;
    position: absolute;
    width:500px;
}
.disactivated{
    display: none;
}

jQuery

$(document).ready(function(){
    $('a').on('click',function(){
        $(this)
          .slideDown('fast')
          .siblings("div:visible").slideUp('fast')
    })
});

最佳答案

在您的 jQuery 代码中,$(this) 指的是 a 元素(您点击的元素),而不是您的目标 div。

$('a').on('click',function(){
    var target = $(this).attr('href');

    $(target)
        .slideDown('fast')
        .siblings("div:visible").slideUp('fast');
})

如果你想切换 disactivated 类,像这样链接它:

    $(target)
        .removeClass('disactivated')
        .slideDown('fast')
        .siblings("div:visible")
            .slideUp('fast')
            .addClass('disactivated');

此外,在链接上使用点击事件时,您可能希望将 return false 添加到事件处理程序的末尾。最终代码应如下所示:

$('a').on('click',function(){
    var target = $(this).attr('href');

    $(target)
        .removeClass('disactivated')
        .slideDown('fast')
        .siblings("div:visible")
            .slideUp('fast')
            .addClass('disactivated');

    return false;
})

关于javascript - 如何使此 slideDown/slideUp 与不同的类一起正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44096674/

相关文章:

javascript - 通过 AJAX 和 JQUERY 动态添加输入表单

javascript - jQuery 脚本在 jsFiddle 上运行但不在本地运行

javascript - 刷新由 django 模板生成的 <div> 元素

javascript - 如何在 cordova 移动设备上本地加载 base64 音频?

javascript - 使用 javascript 删除 CSS 类未产生预期结果

javascript - JQuery如何在创建的元素中创建元素

HTML5 Canvas : How can I check if a stroke is crossing an other stroke?

javascript - JS : calculate savings based on last element of a list

javascript - return Json 函数没有更新我的下拉列表

javascript - 用 div 包裹多个节点