让我们说点击一个按钮时会发出很多点击,识别每个事件对象的最佳方法是什么,这样我才能获取第一个事件对象....下面是我尝试但不工作的代码,因为它没有采取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;
}
});
答案 0 :(得分: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
}));
这只会调用你的函数一次(第一次),无论它被触发了多少次。只有在没有触发器暂停500ms后,您的功能才会再次运行。
这是一个快速演示:http://jsfiddle.net/ycpgz/