2016-01-27 15 views
11

Trong JavaScript, là đoạn mã sau:

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

Giống như:

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

Là hai khối mã trên bằng nhau, chức năng khôn ngoan? Có lợi thế hay bất lợi (tuy nhiên nhỏ) sử dụng một hay khác?

gì về:

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

window.onresize là DOM $ (cửa sổ) .on là jQuery. Cả hai đều khác nhau nhưng hiệu quả là giống nhau – progrAmmar

Trả lời

17

Họ không giống nhau, trong ví dụ đầu tiên, bạn đang làm ảnh hưởng đến một sự kiện để các đối tượng dom onresize xử lý.

Phiên bản jQuery có thể đang làm điều gì đó khác biệt đằng sau hiện trường. Mà không nhìn vào mã nguồn, nó có lẽ chỉ đơn giản là thực hiện:

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

Điều đó nói rằng, phiên bản jQuery và mẹ đẻ addEventListener vẫn còn khác nhau vì jQuery cũng được bổ sung thêm một số phép thuật để xử lý sự kiện.

addEventListenener có lẽ là cách được ưu tiên để thêm sự kiện vào đối tượng DOM, vì bạn có thể thêm nhiều sự kiện nhưng với thuộc tính dom on[event] bạn bị giới hạn trong một sự kiện.

Dưới đây là một chút thông tin về nó: https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener

Trong khi bạn đang ở đó, bạn cũng có thể đọc về những người bạn addEventListener: removeEventListener.

+1

Cộng với lợi thế của jQuery là đảm bảo khả năng tương thích trình duyệt chéo. Không phải là một vấn đề lớn, nếu bạn chỉ quan tâm đến các trình duyệt mới nhất nhưng thực sự hữu ích với các trình duyệt cũ hơn. – Anton

+0

@Anton có thể là có thể nhưng tôi đã không viết nhiều bất cứ điều gì bằng cách sử dụng jQuery cho một vài năm và tôi không bao giờ cảm thấy tốt hơn. Việc phải làm việc với một khung công tác được tổ chức tốt hơn 9000 lần đẹp hơn so với việc sửa đổi các chỉnh sửa jQuery, và mặc dù 'addEventListener' dài hơn để viết, một khung làm đúng cách có thể ngăn chặn thậm chí tạo bất kỳ loại trình nghe sự kiện nào một cách rõ ràng. Biết được ruột là tốt để di chuyển xa hơn. –

+0

Cảm ơn Loïc và Anton vì câu trả lời của bạn. Nhiều đánh giá cao. –

10

Không có chúng không giống nhau. Bạn có thể thử:

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

và function1 và function2 đều phản hồi khi thay đổi kích thước cửa sổ.

Nhưng nếu bạn sử dụng

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

Chỉ function2 đáp ứng.

Các vấn đề liên quan