Javascript + onresize事件

时间:2013-07-18 11:33:50

标签: javascript

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

var windowResize = {    
  fire : function(){ window.onresize = function(){ console.log('fire') }},
  tire : function(){ window.onresize = function(){ console.log('tire') }}
}
windowResize.fire();
windowResize.tire();

3 个答案:

答案 0 :(得分:3)

@ Hemant绝对正确。

纯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();

答案 1 :(得分:0)

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

您可以使用jQuery或其他库来实现此目的,它们可以为特定事件保存一组处理程序,并在事件发生时将它们全部触发。

使用jquery就像

var windowResize = {    
  fire : function(){ $(window).resize( function(){ console.log('fire')});},
  tire : function(){ $(window).resize (function(){ console.log('tire') });}
}
windowResize.fire();
windowResize.tire();

希望有所帮助

答案 2 :(得分:0)

根据W3C,您无法为同一事件处理程序设置更多功能。 您可以像这样使用jQuery:

$('#foo').bind('resize', function() {
  console.log('fire');
  console.log('tire');
});

我希望我有所帮助^ _ ^