无论点击速度和浏览器如何,每次单击按钮时恰好执行函数的最佳方法是什么?
简单地绑定(bind)一个“点击”处理程序在除 IE 之外的所有浏览器中都能完美地工作。
在 IE 中,当用户点击太快时,只有“dblclick”触发,所以“click”处理程序永远不会执行。其他浏览器会触发这两个事件,因此这对它们来说不是问题。
明显的解决方案/hack(至少对我而言)是在 IE 中附加一个 dblclick 处理程序,它会触发我的点击处理程序两次。另一个想法是自己使用 mousedown/mouseup 来跟踪点击,这看起来很原始,可能属于框架而不是我的应用程序。
那么,最好/通常/正确的处理方式是什么? (首选纯 Javascript 或 jQuery)
最佳答案
根据您的情况,您可以使用不同的方法,但我建议像这样在 jQuery 中使用命名空间事件处理程序:
function eventHandler(event) {
// your handler code here
doSomeMagic();
}
var element = $('#element');
element.one('click.someNameSpace', function(event){
// first we unbind all other event handlers with this namespace
element.unbind('.someNameSpace');
// then we execute our eventHandler
eventHandler();
}).one('dblclick.someNameSpace', function(event){
// If this fires first, we also unbind all event handlers
element.unbind('.someNameSpace');
// and then execute our eventHandler
eventHandler();
});
我不确定这是否会按照您想要的方式工作,但我想这是一个开始。
关于javascript - 捕获按钮上所有单击的跨浏览器方式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2576975/