我有多个按钮,当我单击每个按钮时,我希望与该按钮关联的元素向下滑动,然后当我单击同一按钮时,同一元素也会向上滑动。下面的代码有效,但是如果我单击一个按钮,它会向下滑动,然后单击第二个按钮,则什么也不会发生,因为它会运行代码的else部分。我该如何解决?

var moreOption = 1;
$(".more-button").click(function(){
        var buttonNumber = $(this).attr('buttonNumber');
        if (moreOption === 1) {
            $("#more"+buttonNumber).slideDown();
            moreOption = 2;
        } else if (moreOption === 2) {
            $("#more"+buttonNumber).slideUp();
            moreOption = 1;
        }
    });

最佳答案

只需在按钮上使用数据属性,然后手动切换状态即可,如下所示:

<button class="more-button" data-showMore="1" data-buttonNumber="1"/>

$(".more-button").click(function(){
        var buttonNumber = $(this).data('buttonNumber');
        var moreOption = $(this).data('showMore');
        if (moreOption == '1') {
            $("#more"+buttonNumber).slideDown();
            $(this).data('showMore', '2');
        } else if (moreOption == '2') {
            $("#more"+buttonNumber).slideUp();
            $(this).data('showMore', '1');
        }
    });

07-24 20:31