Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/381.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jqueryif-Else语句发出_Javascript_Jquery - Fatal编程技术网

Javascript jqueryif-Else语句发出

Javascript jqueryif-Else语句发出,javascript,jquery,Javascript,Jquery,我有多个按钮,当我单击每个按钮时,我希望与该按钮关联的元素向下滑动,然后当我单击同一按钮时,相同的元素向上滑动。下面的代码可以工作,但如果我单击一个按钮,它会向下滑动,然后单击第二个按钮,什么也不会发生,因为它运行代码的else if部分。我该如何解决这个问题 var moreOption = 1; $(".more-button").click(function(){ var buttonNumber = $(this).attr('buttonNumber');

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

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');
        }
    });

$(“.more按钮”)。单击(函数(){
var buttonNumber=$(this.data('buttonNumber');
var moreOption=$(this.data('showMore');
如果(moreOption='1'){
$(“#更多”+按钮编号).slideDown();
$(this).data('showMore','2');
}else if(moreOption==“2”){
$(“#更多”+按钮编号).slideUp();
$(this).data('showMore','1');
}
});

您无法使用单个变量跟踪两个按钮的状态。每个按钮需要一个变量。@jsalonen是的,我知道。如何为每个按钮使用不同的变量,以便轻松添加新按钮?谢谢。使用
$(this).data()
直接跟踪元素上的值,那么跟踪它们自己时,您拥有多少个元素并不重要。我会更进一步,通过数据属性而不是ID来匹配你的“#more”,因为我通常不同意混合ID和变量。当运行
警报($(this).data('buttonNumber'))
警报($(this).data('showMore'))
时,我没有定义。我将
.data('foo')
切换为
.attr('data-foo'))
,它成功了。谢谢。@owwerr您使用的是哪个版本的jquery?@freedomn-m2.2.4