javascript - jquery SlideToggle 使用 1 个单击事件来切换两个单独的元素

标签 javascript jquery

尝试在 1 个单击事件中滑动切换两个单独的元素。它有点工作,但是一个元素没有动画,我在使动画流畅时遇到问题

CSS

.wrapper {
    width: 300px; margin: 10px auto; height: 300px;
    background-color: #e5e5e5; 
    border: 1px solid #d8d8d8;
    position: relative;
}

.menu { 
    list-style: none; margin: 0; padding: 0; width: 62%; background-color: blue;
    position: absolute; right: 0; top: 0; height: 100%; display: none; z-index: 300;
}

a { 
    display: block; width: 50px; height: 60px; background-color: orange; 
    position: absolute; right: 5%; z-index: 500;
}

.moveButton { right: auto; left: 38%; }

HTML

<div class="wrapper">
<a href="#">Menu</a>
<ul class="menu">
    <li>Item</li>
    <li>Item</li>
    <li>Item</li>
    <li>Item</li>
    <li>Item</li>
</ul>
</div>

jquery

$('a').click(function() { var effect = 'slide'; var options = { direction: 'right' } var duration = 200;

$('.menu').stop().toggle(effect, options, duration);

$(this).toggleClass('moveButton'); });

fiddle http://jsfiddle.net/NZ2DX/

注释 我尝试过对toggleClass进行动画处理,但它从左侧而不是右侧进入

菜单按钮应位于展开时的菜单内

enter image description here

最佳答案

我猜你想要this .

$('a').click(function () {
    var effect = 'slide';
    var options = {
        direction: 'right'
    }
    var duration = 200;
    if ($('.menu').is(":hidden")) {
        $(this).animate({
            right: "62%"
        }, duration);
    } else {
        $(this).animate({
            right: "5%"
        }, duration);
    }
    $('.menu').stop().toggle(effect, options, duration);
});

如果您确实希望该按钮位于菜单顶部,您可以这样做 this .

$('a').click(function () {
    var effect = 'slide';
    var options = {
        direction: 'right'
    }
    var duration = 200;
    if ($('.menu').is(":hidden")) {
        var w = $(this).parent().width()*0.62 - $(this).width();
        $(this).animate({
            right: w
        }, duration);
    } else {
        $(this).animate({
            right: "5%"
        }, duration);
    }
    $('.menu').stop().toggle(effect, options, duration);
});

关于javascript - jquery SlideToggle 使用 1 个单击事件来切换两个单独的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20617101/

相关文章:

jquery - 使用 jQuery 扩大和缩小 div

javascript - Node.js中如何实现两个数组之间的增删改查?

javascript - 我的模式上的确认删除按钮不起作用

javascript - JQuery Mobile showPageLoadingMsg 未按预期显示

javascript - 在追加之前将数据存储在元素上

jquery - 如何防止 jquery.ui.dialog 将窗口滚动到顶部(以编程方式调用时)

javascript - 在 SELECT 标签中搜索 OPTION

javascript - <HTML> 先前日期验证

javascript - graphql-tools 突变解析器的参数不是 v > 0.8.0 中的对象?

javascript - 使用 Nashorn JavaScript Engine (Java 8) 访问 ScriptContext 变量