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