jQuery `.click`条件不响应`else`

jQuery `.click` Conditional not responding to `else`

本文关键字:else 不响应 click jQuery 条件      更新时间:2023-09-26

我有一个函数,它通过添加'.expand'类来检查我的trigger元素是否有类.collapsedtarget元素。但是,动画仅发生一次,并且仅在条件为true时发生。由于某些原因,false分支被忽略。这是我的功能:

function toggleArrow(){
  var target = $(this).find('img.arrow');
  if($(this).hasClass('collapsed')){
    $(target).addClass('expanded');
  } else {
    $(target).removeClass('expanded');
  }
}
$('.foo a').click(toggleArrow);

编辑:

创建了Bootply:http://www.bootply.com/OP1yHNihDe#

解决方案:

使用@Binvention应答并删除else分支,将addClass/removeClass替换为toggleClass,如下所示:

function toggleArrow(e){
  var target = $(this).find('img.arrow');
  if(!$(this).is('expanded')) {
    $(target).toggleClass('expanded');
  }
}

我会有一个单独的类,要么折叠,要么展开(折叠会更容易,因为对象上的默认显示是显示在网页上的块),然后只使用.toggleClass()函数。它更简单,结果应该是一样的。所以你的代码看起来是这样的:

function toggleArrow(){
  var target = $(this).find('img.arrow');
  $(target).toggleClass('collapsed');
}