JavaScript中的$(window).on('resize')

GTS*_*Joe 18 javascript windows jquery resize

在JavaScript中,是以下代码:

window.onresize = function() {
    // Do something.
}
Run Code Online (Sandbox Code Playgroud)

同样如下:

$(window).on('resize', function () {
    // Do something.
});
Run Code Online (Sandbox Code Playgroud)

这两个代码块在功能方面是否相同?使用其中一个是否有任何优点或缺点(无论多么微小)?

关于什么:

window.addEventListener('resize', function(event) {
    // Do something.
});
Run Code Online (Sandbox Code Playgroud)

Loï*_*oix 26

它们不一样,在第一个示例中,您正在影响dom对象onresize处理程序的事件.

jQuery版本可能在幕后做了不同的事情.没有查看源代码,它可能只是在做:

window.addEventListener('resize', function () {...})
Run Code Online (Sandbox Code Playgroud)

也就是说,jQuery版本和原生版本addEventListener仍然不同,因为jQuery也为事件处理程序添加了一些魔力.

并且addEventListenener可能是将事件添加到DOM对象的首选方法,因为您可以添加多个事件,但是使用dom属性,on[event]您只能使用一个事件.

这里有更多关于它:https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener

当你在这里时,你也可以读到这位addEventListener朋友:removeEventListener.

  • 加上jQuery的优势是跨浏览器兼容性的保证。如果您只关心最新的浏览器,但对于较旧的浏览器确实有用,那没什么大不了的。 (2认同)

jil*_*ate 15

不,他们不一样.你可以尝试:

  $(window).on('resize',function1);
  $(window).on('resize',function2);
Run Code Online (Sandbox Code Playgroud)

并且当窗口调整大小时,function1和function2都会响应.

但如果你使用

 window.onresize = function1;
 window.onresize = function2;
Run Code Online (Sandbox Code Playgroud)

只有function2响应.