闭包for循环多次执行,清除重复操作?

随_声 2020-06-09 04:01:34

drop : function(event, ui) {//拖拽期间触发
var ud = ui.helper;
var doubleTapImg = ud;
for (var i=0;i<doubleTapImg.length;i++) {
(function(doubleTapImg) {
var _flag = true;
Transform(doubleTapImg);
new AlloyFinger(doubleTapImg, {
doubleTap:function(evt){
alert("第三次");//双击事件重复执行
if(_flag){
_flag = false;
alert("fangda");
evt.preventDefault();
}else {
_flag = true;
alert("suoxiao");
evt.preventDefault();
}
}
});
})(doubleTapImg[i]);
}
}

每拖动一次没有双击,就会保留,
如果我拖动拖动5次,前面4次都没有执行双击,最后一次执行双击就会弹出五次alert("第三次");
...全文
315 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
squarea_de 2020-06-29
  • 打赏
  • 举报
回复
debouncs(function(){ 你的代码 }) 这个大概是个延时器 ,500毫秒内有重复操作 就清除之前的timeout 500毫秒内在执行
  • 打赏
  • 举报
回复
https://www.jianshu.com/p/c8b86b09daf0,看看吧,挺详细的
随_声 2020-06-12
  • 打赏
  • 举报
回复
引用 8 楼 qq_45713941 的回复:
function debouncs(func, wait = 500) {
  let timeout;
  return function (event) {
    clearTimeout(timeout);
    timeout = setTimeout(() => {
      func.call(this, event);
    }, wait);
  };
};
闭包不要doubleTapImg转为DOM对象也会重复绑定,如何把最主要的这一段套进去执行?解答一下,谢谢了

Transform(doubleTapImg);
new AlloyFinger(doubleTapImg, {
        doubleTap:function(evt){
            alert("第三次");//双击事件重复执行
                  evt.preventDefault();
        }
}
随_声 2020-06-12
  • 打赏
  • 举报
回复
引用 5 楼 qq_45713941 的回复:
function debouncs(func, wait = 500) { let timeout; return function (event) { clearTimeout(timeout); timeout = setTimeout(() => { func.call(this, event); }, wait); }; };
debouncs如何调用这个呢,因为我是引入别人的双击事件
  • 打赏
  • 举报
回复
function debouncs(func, wait = 500) {
  let timeout;
  return function (event) {
    clearTimeout(timeout);
    timeout = setTimeout(() => {
      func.call(this, event);
    }, wait);
  };
};
随_声 2020-06-12
  • 打赏
  • 举报
回复
引用 11 楼 qq_45713941 的回复:
https://www.jianshu.com/p/c8b86b09daf0,看看吧,挺详细的
懂了这个了,还有点不懂的是怎么调用,我觉得我这样调用不对,因为我写的是移动端的双击,这样写双击事件没触发成功,是不是我调用不对吧?

function debounce(func, wait) {
        let timeout;
        return function () {
            let context = this;
            let args = arguments;

            if (timeout) clearTimeout(timeout);

            timeout = setTimeout(() => {
                func.apply(context, args)
            }, wait);
        }
    }
drop : function(event, ui) {//拖拽触发
    var ud = ui.helper;
    var doubleTapImg=$(ud).get(0);  
    function doub() {
        new AlloyFinger(domObj, {
            doubleTap: function (evt) {
                alert("触发双击事件");
                evt.stopPropagation();
             },
        });
    }
}
 $(domObj).doubleTap=debounce(doub,300);//感觉这一条调用的不对,是移动端的双击,
  • 打赏
  • 举报
回复
function debouncs(func, wait = 500) { let timeout; return function (event) { clearTimeout(timeout); timeout = setTimeout(() => { func.call(this, event); }, wait); }; };
随_声 2020-06-11
  • 打赏
  • 举报
回复
引用 1 楼 qq_45713941 的回复:
防抖,节流。。。。
请问防抖怎么写?自己也去看了防抖和节流,没太搞懂
随_声 2020-06-10
  • 打赏
  • 举报
回复
引用 2 楼 Lpyexplore 的回复:
太晕了,能发个格式好点的代码么,这个太乱了啊

drop : function(event, ui) {//拖拽期间触发
    var ud = ui.helper;
    var doubleTapImg = ud;
    for (var i=0;i<doubleTapImg.length;i++) {
        (function(doubleTapImg) {
            var _flag = true;
            Transform(doubleTapImg);
            new AlloyFinger(doubleTapImg, {
                doubleTap:function(evt){
                alert("第三次");//双击事件重复执行
                if(_flag){
                    _flag = false;
                   alert("fangda");
                   evt.preventDefault();
               }else {
                   _flag = true;
                  alert("suoxiao");
                  evt.preventDefault();
               }
          }
     });
    })(doubleTapImg[i]);
  }
}
「零一」 2020-06-09
  • 打赏
  • 举报
回复
太晕了,能发个格式好点的代码么,这个太乱了啊
  • 打赏
  • 举报
回复
防抖,节流。。。。

87,914

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧