0

假设单击按钮时会触发许多点击,识别每个事件对象的最佳方法是什么,以便我只能获取第一个事件对象....下面是我尝试但无法正常工作的代码,因为它没有eventCounter() 函数...我不确定这是否能解决我的问题,但我尝试了绑定和取消绑定但不工作..

   var eventIndex;
   var elementOjb;

   function eventCount(eventIndex)
   {
       if(eventIndex == undefined)
       {
         return eventIndex = 0;
       }else
       {
         return eventIndex++;
       }
   }

   $("#file").on("click",{source: eventCounter()}, function(event)
   {
        eventIndex = event.data.source;
        elementOjb = $(this);

        if(eventIndex === 0)
        {
             // create tree
             return false;
        }
   });
4

1 回答 1

0

你想“去抖动”你的函数,也就是说,即使它被多次触发,也要运行它一次。

有一个 jQuery 插件可以帮助解决这个问题:http: //benalman.com/projects/jquery-throttle-debounce-plugin/

将其添加到您的页面,然后将您的代码更改为:

$("#file").on("click", $.debounce(500, true, function(event){
    event.preventDefault(); // return false doesn't work with debounce
    // create tree
}));

这只会调用你的函数一次(第一次),不管它被触发了多少次。只有在没有触发器的 500 毫秒暂停后,您的函数才会再次运行。

这是一个快速演示:http: //jsfiddle.net/ycpgz/

于 2013-09-19T19:48:57.537 回答