Theo http://www.quirksmode.org/dom/events/resize.html sự kiện thay đổi kích thước có sẵn trên cửa sổ, nhưng không phải trên các tài liệu hoặc các yếu tố khác (nếu chúng ta bỏ qua một số trường hợp ngoại lệ nêu tại trang đó).
Vì vậy, nó thực sự là unexpectable rằng việc thay đổi chiều rộng và/hoặc chiều cao của một số yếu tố sử dụng thay đổi kích thước() gây ra:
1) thay đổi kích thước kiện bắn vào tất cả
2) thay đổi kích thước kiện bọt lên đến đối tượng cửa sổ
Nếu tôi muốn chỉ tạo $ ('# elem') có thể thay đổi kích cỡ, đó là tất cả những gì tôi muốn. Không phải bất kỳ sự kiện kích hoạt thay đổi kích thước cửa sổ hoặc bong bóng nào.
tôi đã thực hiện một sự thay đổi một dòng như ví dụ fiddle (và cập nhật các thư viện hơn một chút phiên bản gần đây):
http://jsfiddle.net/CPUwW/56/
// The following line is the needed change. widgetEventPrefix is
// originally 'resize'. It have to be changed.
$.ui.resizable.prototype.widgetEventPrefix = 'myresize';
$(function(){
var resizes = 0;
$(window).on('resize', function(){
$('#text').text(++resizes);
});
$('#my_element').resizable();
});
EDIT: Vấn đề về các giải pháp khác trên trang này (và cũng here) là bong bóng lên đến cửa sổ và bắn sự kiện thay đổi kích thước của cửa sổ gây ra chi phí không cần thiết nếu bạn chỉ muốn thay đổi kích thước một số div hoặc như vậy.
EDIT2: Vì widgetEventPrefix
là một tham số nội bộ, tên của nó có thể thay đổi, nó có thể bị xóa và hành vi của nó có thể được thay đổi trong phiên bản mới của giao diện người dùng jQuery. Vì vậy, khi nâng cấp giao diện người dùng, hãy kiểm tra xem thao tác này có hoạt động như trước không.
Nguồn
2015-05-20 12:45:29
sử dụng event.stopPropagation(); http://api.jquery.com/event.stopPropagation – Daniel
Sự kiện "thay đổi kích thước" sẽ bong bóng lên đến đối tượng cửa sổ trừ khi bạn dừng quá trình truyền. –
Tôi nghĩ rằng đây là một lỗi trong jQueryUI có thể thay đổi kích thước, kích hoạt sự kiện thay đổi kích thước cửa sổ mà không quan tâm đến giá trị trả lại hoặc dừng trạng thái tuyên truyền. – Doug