首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在jQuery或纯javascript中添加额外的事件处理程序?

问如何在jQuery或纯javascript中添加额外的事件处理程序?
EN

Stack Overflow用户
提问于 2012-02-09 22:55:42
回答 5查看 2.5K关注 0票数 2

我有我自己的带有onShow()函数的对象,当object显示时(由我)调用它。我可以通过赋值重写这个函数。

代码语言:javascript
复制
o.onShow = function() { // something };

但它删除了函数的以前版本。因此,如果我希望保存现有的处理程序,我应该缓存它并调用新的处理程序:

代码语言:javascript
复制
o.oldOnShow = o.onShow;
o.onShow = function() { this.oldOnShow(); // something };

但是通过这种方式,我只能缓存一个先前的处理程序。如果他们中有很多人呢?

有没有一种方便的方法来完成这项任务?这个任务在文献中是如何命名的?在jQuery中有解决这个问题的方法吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-02-09 23:03:48

如果您需要触发自定义事件(如您所定义的),则应该调用.trigger()方法(只要您觉得应该触发该事件):

代码语言:javascript
复制
$(o).trigger('my-awesome-event');

然后使用.bind()或(如果使用jQuery 1.7+) .on()定义一个或多个监听器

代码语言:javascript
复制
$(o).on('my-awesome-event', function(event){ ... });
票数 4
EN

Stack Overflow用户

发布于 2012-02-09 22:58:49

在jQuery中,您可以添加任意数量的处理程序:

代码语言:javascript
复制
$(o).on('show', function() { ... });

后续调用不会删除先前绑定的处理程序。

票数 5
EN

Stack Overflow用户

发布于 2012-02-09 22:58:01

您可以使用jQuery的bind方法:

代码语言:javascript
复制
$( o ).bind( "show", function() {} );

这会将事件处理程序添加到事件处理程序列表中,而不会覆盖现有的处理程序。Here are the docs

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9213121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档