e.stopPropagation 与 e.stopImmediatePropagation的区别

在vue中使用时stopImmediatePropagation可以让事件立即结束,而stopPropagation有时会循环,这点十分重要。

如下示例:

$(".content-ul").on("click", ".img-li", function (e) {
  e.stopImmediatePropagation();
  if ($(".content-ul .img-li").length < 5) {//
    $(this).addClass("current-click").siblings().removeClass("current-click");
    return false;
  }
  if (!clickFlag) {
    //layer.msg("对不起,你操作太快了,我跟不上呀",{time:1500,icon:5});
    return false;
  }
  clickFlag = false;

  var perInterval = 476;//每张图的大小
  var theTransitionDuration = 0.5;//过渡时间
  var $this = $(this);
  var $thisParent = $this.parent();
  var _index = $this.index();//当前点击的元素索引
  var currentPickindex = $thisParent.children(".current-click").index();
  var maxLength = $thisParent.children().length;
  if (_index == 2 && $this.hasClass("current-click")) {//点中间图则放最大
    clickFlag = true;
    //layer.msg("亲,中间这个你可不能点哦。",{time:1500,icon:5});
    var currentClickImgSrc = $.trim($this.find("img").attr("src"));
    vm.openFullScreenPage(currentClickImgSrc);
    return false;
  } else if (_index == (currentPickindex + 1)) {//往前点翻转

以上示例,如果用stopPropagation时,第一次点击时会有两次click回调触发,

导致当_index从1变为2时,就进了这个流程:

if (_index == 2 && $this.hasClass("current-click")) 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值