猿问

如何绑定DOM元素上的所有事件?

如何绑定DOM元素上的所有事件?

我怎样才能绑定所有的事件(即clickkeypressmousedown一个DOM元素),使用jQuery,没有单独列出每一个出来?

例:

$('#some-el').bind('all events', function(e) {
    console.log(e.type);});


一只名叫tom的猫
浏览 497回答 3
3回答

慕桂英3389331

有一种简单(但不准确)的方法来测试所有事件:function getAllEvents(element) {     var result = [];     for (var key in element) {         if (key.indexOf('on') === 0) {             result.push(key.slice(2));         }     }     return result.join(' ');}然后绑定所有这样的事件:var el = $('#some-el');el.bind(getAllEvents(el[0]), function(e) {     /* insert your code */});

心有法竹

jQuery改变了它保存事件的方式,有几种方法可以根据你使用的版本提取列表。我在插件中封装了“最新”版本,但基本上你想要:var events = $._data($('yourelement')[0], "events");这给出了所有绑定事件的嵌套列表,按“基”事件(无命名空间)分组。但是,我只是意识到你想要所有本机jQuery事件 - 你可以检查$.event,其中有一些在下$.event.special,但接受的答案可能仍然是你最好的选择。您还可以查看jQuery列出的绑定函数。
随时随地看视频慕课网APP
我要回答