javascript - 捕获按钮上所有单击的跨浏览器方式是什么?

标签 javascript jquery internet-explorer cross-browser dom-events

无论点击速度和浏览器如何,每次单击按钮时恰好执行函数的最佳方法是什么?

简单地绑定(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/

相关文章:

asp.net - Telerik 控制 radscheduler 在 IE 11 上无法正常工作

javascript - 重新运行 Ajax 脚本?

javascript - 向下滚动页面时多次更改背景颜色

jquery - Datepicker (1.8rc3) 不在 IE6 中传输日期

javascript - 我的 HTML Div 元素在页面加载时立即消失

jquery - 应用边框时保持元素位置固定

python - 使用 Python 的 headless-selenium-for-win

javascript - 在 ReactJS 中将包装器组件作为 props 传递

javascript - 如何根据不同的服务器端状态异步加载React组件?

javascript - 在php中将复选框值发送到数据库