类切换主干,javascript

类切换主干,javascript,javascript,jquery,backbone.js,Javascript,Jquery,Backbone.js,我有一个按钮和图标在上面。当我单击按钮时,类成功切换,但是,当我单击按钮内的图标时,类不会切换。 这是我的html: <a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne-{{id}}"> <button id="btnCollapse" class="btn" style="width: 25px;" type="button"&g

我有一个按钮和图标在上面。当我单击按钮时,类成功切换,但是,当我单击按钮内的图标时,类不会切换。 这是我的html:

<a class="accordion-toggle" data-toggle="collapse" data-parent="#accordion2" href="#collapseOne-{{id}}">
    <button id="btnCollapse" class="btn" style="width: 25px;" type="button">
        <i id="accordionIcon-{{id}}" class="right"></i>
    </button>
</a>
使用如下处理程序:

handleClass: function(event) {
  var $target;
  if (event.target.tagName.toUpperCase() == 'I') {
    $target = $(event.target);
  } else {
    $target = $(event.target).find('i');
  }

  $target.toggleClass('right down');
}

您可能希望尝试
event.currentTarget
而不是
event.target

“此属性通常与函数的此属性相同。”

$(ev.target)。最近('.accordio toggle')。查找('i')
可能是更好的选择。@muistooshort,也是正确的!代码更少,但取决于附加的容器元素。IMHO较少的依赖性——是更好的代码设计。
handleClass: function(event) {
  var $target;
  if (event.target.tagName.toUpperCase() == 'I') {
    $target = $(event.target);
  } else {
    $target = $(event.target).find('i');
  }

  $target.toggleClass('right down');
}