首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Javascript + onresize事件

Javascript + onresize事件
EN

Stack Overflow用户
提问于 2013-07-18 19:33:50
回答 3查看 758关注 0票数 1

为什么我不能将onresize的多个实例添加到window元素?例如,只有第二个onresize事件(轮胎)会跟踪到日志:

代码语言:javascript
复制
var windowResize = {    
  fire : function(){ window.onresize = function(){ console.log('fire') }},
  tire : function(){ window.onresize = function(){ console.log('tire') }}
}
windowResize.fire();
windowResize.tire();
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-18 19:55:14

@Hemant是绝对正确的。

纯javascript代码的另一个版本是这样的。

代码语言:javascript
复制
var windowResize = {    
  fire : function(){ window.addEventListener('resize', function(){console.log('fire');}, false);},
  tire : function(){ window.addEventListener('resize', function(){console.log('tire');}, false);}
} 

windowResize.fire();
windowResize.tire();
票数 3
EN

Stack Overflow用户

发布于 2013-07-18 19:41:12

这是因为DOM默认事件可以有一个附加的处理程序。当您第二次注册resize事件时,它会覆盖以前的值。

您可以使用jQuery或其他库来实现这一点,它们可以保存特定事件的处理程序数组,并在事件发生时触发所有处理程序。

使用jquery将如下所示

代码语言:javascript
复制
var windowResize = {    
  fire : function(){ $(window).resize( function(){ console.log('fire')});},
  tire : function(){ $(window).resize (function(){ console.log('tire') });}
}
windowResize.fire();
windowResize.tire();

希望能有所帮助

票数 0
EN

Stack Overflow用户

发布于 2013-07-18 19:50:55

根据W3C,您不能为同一事件处理程序设置多个函数。您可以像这样使用jQuery:

代码语言:javascript
复制
$('#foo').bind('resize', function() {
  console.log('fire');
  console.log('tire');
});

我希望我能帮上忙,^_^

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

https://stackoverflow.com/questions/17722312

复制
相关文章

相似问题

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