结束JQuery事件冒泡

时间:2013-09-03 17:54:09

标签: javascript jquery javascript-events event-handling jquery-animate

这很简单......但由于某种原因,我无法让它发挥作用。 下面的JQuery只需通过点击为sideNav栏上的选项设置背景动画。 但是,如果我要点击半/秒跨度内的多个项目,则会有多个项目发生动画。 (因此看起来像是一次选择了多个项目。)

event.stopPropogation();应该取消动画事件,不是吗? 如果没有,我该如何解决这个问题?谢谢!

$('.sidebar nav ul li').not('.user').click(function(event){
  event.stopPropagation();

  $('.sidebar nav ul li').css('background-size', '15px');
  $('.sidebar nav ul li').removeClass('active');

  $(this).animate({
'background-size': '100%'
  }, 500);

  setInterval(function(){
$(this).addClass('active');
    return true;
  },501);
});

1 个答案:

答案 0 :(得分:2)

stopPropagation完全听起来像它,它会阻止事件传播到DOM中更高的父元素。
它不会停止动画,即stop();

$('.sidebar nav ul li').not('.user').click(function(){

    $('.sidebar nav ul li').stop(true, true)
                           .css('background-size', '15px')
                           .removeClass('active');

    $(this).animate({
      'background-size': '100%'
    }, 500, function() {
        $(this).addClass('active');
    });
});