我有我自己的带有onShow()函数的对象,当object显示时(由我)调用它。我可以通过赋值重写这个函数。
o.onShow = function() { // something };但它删除了函数的以前版本。因此,如果我希望保存现有的处理程序,我应该缓存它并调用新的处理程序:
o.oldOnShow = o.onShow;
o.onShow = function() { this.oldOnShow(); // something };但是通过这种方式,我只能缓存一个先前的处理程序。如果他们中有很多人呢?
有没有一种方便的方法来完成这项任务?这个任务在文献中是如何命名的?在jQuery中有解决这个问题的方法吗?
发布于 2012-02-09 23:03:48
如果您需要触发自定义事件(如您所定义的),则应该调用.trigger()方法(只要您觉得应该触发该事件):
$(o).trigger('my-awesome-event');然后使用.bind()或(如果使用jQuery 1.7+) .on()定义一个或多个监听器
$(o).on('my-awesome-event', function(event){ ... });发布于 2012-02-09 22:58:49
在jQuery中,您可以添加任意数量的处理程序:
$(o).on('show', function() { ... });后续调用不会删除先前绑定的处理程序。
发布于 2012-02-09 22:58:01
您可以使用jQuery的bind方法:
$( o ).bind( "show", function() {} );这会将事件处理程序添加到事件处理程序列表中,而不会覆盖现有的处理程序。Here are the docs
https://stackoverflow.com/questions/9213121
复制相似问题