2016-01-27 25 views
11

在JavaScript中,是将以下代码:

window.onresize = function() { 
    // Do something. 
} 

同为:

$(window).on('resize', function() { 
    // Do something. 
}); 

高于等于两个码块,功能明智?使用其中一个或另一个有什么优势或劣势(无论小)?

关于什么:

window.addEventListener('resize', function(event) { 
    // Do something. 
}); 
+0

window.onresize是DOM $(window).on是jQuery。两者不同,但效果相同 – progrAmmar

回答

17

他们是不一样的,第一个例子,你影响了事件的DOM对象onresize处理程序。

jQuery版本可能在幕后做了一些不同的事情。如果没有寻找到的源代码,它可能是简单地做:

window.addEventListener('resize', function() {...}) 

也就是说,jQuery的版本和本地addEventListener仍然是不同的,因为jQuery是还加入了一些神奇的事件处理程序。

addEventListenener可能是将事件添加到DOM对象的首选方式,因为您可以添加多个事件,但是dom属性on[event]仅限于一个事件。

下面是详细了解一下吧:https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener

当你在这,你也可以阅读有关addEventListener朋友:removeEventListener

+1

加上jQuery的优势是跨浏览器兼容性的保证。没有什么大不了的,如果你只关心最新的浏览器,但对于较老的浏览器真的有用。 – Anton

+0

@Anton这可能是可能的,但我已经写了很多使用jQuery的东西了几年,我从来没有感觉好多了。不得不使用正确组织的框架比使用jQuery胶合dom修改更好,即使'addEventListener'的写入时间更长,正确完成的框架也可能会阻止明确地创建任何类型的事件侦听器。了解内部结构是进一步移动的好机会。 –

+0

感谢Loïc和Anton,您的回答。非常感激。 –

10

不,它们不一样。您可以尝试:

$(window).on('resize',function1); 
    $(window).on('resize',function2); 

和function1和function2都在窗口调整大小时作出响应。

,如果你使用

window.onresize = function1; 
window.onresize = function2; 

只有函数2响应但是。