【问题标题】:Full list of events that can be bind()/on()/live(),jQuery可以是 bind()/on()/live(),jQuery 的事件的完整列表
【发布时间】:2015-02-05 03:52:23
【问题描述】:

我是 jQuery 新手,我知道我可以使用以下方式为点击事件设置处理程序:

$('#foo').bind('click', handler);

$('#foo').click(handler);

在这里,我们可以看到有一个方法click对应一个事件“点击”。根据Looking for a full list of jQuery event typeshttp://api.jquery.com/category/events/,我可以看到所有可以绑定的jQuery事件方法都在这里列出了Looking for a full list of jQuery event types

虽然有些事件我可以使用on() 方法绑定,但我在该方法类别中找不到,例如我无法找到对应的input 方法“input”事件,而我可以:

$('#inputId').on('input',function(e){
     alert('Changed!')
 });

问题

  1. jQuery的事件方法对应的所有事件都是我可以用on()绑定的事件的子集吗?
  2. 我可以使用 jQuery 的 on 方法绑定到哪些完整事件列表,它们是 https://developer.mozilla.org/en-US/docs/Web/Events 吗?

【问题讨论】:

  • 它们是浏览器知道的任何事件。
  • 这些方法,比如.click,是为了方便而存在的,只是.on(name...)的别名,不能保证所有的DOM事件都有一个jQuery别名。
  • @Barmar,我在哪里可以找到浏览器知道的完整事件列表?

标签: javascript jquery events


【解决方案1】:

您可以绑定到浏览器在 DOM 元素上支持的任何事件。您链接到的页面包含所有标准 DOM 事件,但浏览器也可能提供它们自己的依赖于实现的事件。例如,该页面还有一个标题为 Mozilla-specific events 的部分。对于其他浏览器,您必须找到他们的开发者文档。

如果你可以在Javascript中使用原生addEventListener方法绑定事件,你可以在jQuery中使用.on()绑定它。

【讨论】:

  • 你的意思是我发布的链接的第一部分“标准事件”可以绑定到所有使用 jQuery 中的.on() 的浏览器吗?
【解决方案2】:

我发现这个脚本适用于 Chrome、Firefox 和 IE11

function getEventList(dom) {
    return Object.getOwnPropertyNames(dom).concat(Object.getOwnPropertyNames(Object.getPrototypeOf(Object.getPrototypeOf(dom)))).filter(function (i) {
        return !i.indexOf('on') && (dom[i] == null || typeof dom[i] == 'function');
    })
}

【讨论】:

    猜你喜欢
    • 2013-01-17
    • 1970-01-01
    • 1970-01-01
    • 2011-02-24
    • 1970-01-01
    • 1970-01-01
    • 2012-08-04
    • 2021-05-29
    相关资源
    最近更新 更多