如何绑定DOM元素上的所有事件?我怎样才能绑定所有的事件(即click,keypress,mousedown一个DOM元素),使用jQuery,没有单独列出每一个出来?例:$('#some-el').bind('all events', function(e) {
console.log(e.type);});
3 回答
慕桂英3389331
TA贡献2036条经验 获得超8个赞
有一种简单(但不准确)的方法来测试所有事件:
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 */});
心有法竹
TA贡献1866条经验 获得超5个赞
jQuery改变了它保存事件的方式,有几种方法可以根据你使用的版本提取列表。我在插件中封装了“最新”版本,但基本上你想要:
var events = $._data($('yourelement')[0], "events");
这给出了所有绑定事件的嵌套列表,按“基”事件(无命名空间)分组。
但是,我只是意识到你想要所有本机jQuery事件 - 你可以检查$.event
,其中有一些在下$.event.special
,但接受的答案可能仍然是你最好的选择。您还可以查看jQuery列出的绑定函数。
添加回答
举报
0/150
提交
取消