Согласно http://www.quirksmode.org/dom/events/resize.html событие изменения размеров доступны в окне, но не на документе или других элементов (если мы будем игнорировать некоторые исключения, упомянутые на этой странице).
Так это действительно неожиданный, что изменение ширины и/или высот некоторого элемента с помощью изменяемого() вызывает:
1) изменение размера события обжига при все
2) изменением размером события барботирования до оконного объекта
Если я хочу изменить только $ ('# elem'), это все, что я хочу. Не стрелять в пузырьки или окна.
Я сделал изменения одной строки к примеру скрипке (и обновлена библиотеки немного более поздние версии):
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: Проблема в других решениях на этой странице (и также here) заключается в том, что пузырь до окна и стрельба по событию изменения размера окна вызывает ненужные накладные расходы, если вы просто хотите изменить размер div или около того.
EDIT2: Потому что widgetEventPrefix
является внутренним параметром, его имя может меняться, его можно удалить, и его поведение можно изменить в новых версиях пользовательского интерфейса jQuery. Поэтому при обновлении пользовательского интерфейса убедитесь, что это работает как раньше.
использование event.stopPropagation(); http://api.jquery.com/event.stopPropagation – Daniel
Событие «изменить размер» пузырится до объекта окна, если вы не остановите распространение. –
Я думаю, что это ошибка в jQueryUI resizable, которая запускает событие изменения размера окна без учета возвращаемого значения или состояний распространения остановки. – Doug