Według http://www.quirksmode.org/dom/events/resize.html zdarzenie resize jest dostępny na oknie, ale nie na dokumencie lub innych elementów (jeśli pominiemy pewne wyjątki wymienione na tej stronie).
Więc to jest naprawdę nieoczekiwanie bardzo, że zmiana szerokości i/lub wysokości jakiegoś elementu stosując zmienny rozmiar() powoduje:
1) zmiana rozmiaru zdarzenia wypalania w ogóle
2) zmiany rozmiaru zdarzenie propagacji do obiektu window
Jeśli chcę zmienić rozmiar tylko $ ('# elem'), to wszystko czego chcę. Nie ma wypalania żadnych zdarzeń związanych z propagacją rozmiaru bufora ani okna.
zrobiłem zmianę jednej linii na przykład ryba (i aktualizowany bibliotek nieco nowsze wersje):
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: Problem w innych rozwiązań na tej stronie (i także here) jest to, że bulgotanie się do okna i uruchamianie okna zmiany rozmiaru zdarzenia powoduje niepotrzebne obciążenie, jeśli chcesz tylko zmienić wielkość elementu div lub tak.
EDIT2: Ponieważ widgetEventPrefix
jest parametrem wewnętrznym, jego nazwa może się zmienić, można go usunąć, a jego zachowanie można zmienić w nowych wersjach interfejsu jQuery. Tak więc, aktualizując interfejs użytkownika, sprawdź, czy działa to tak jak poprzednio.
użyj event.stopPropagation(); http://api.jquery.com/event.stopPropagacja – Daniel
Zdarzenie "zmień rozmiar" powoduje pojawienie się bąbelków do obiektu okna, chyba że zatrzymasz propagację. –
Myślę, że jest to błąd w resizable jQueryUI, który wyzwala zdarzenie zmiany rozmiaru okna bez względu na wartość zwracaną lub zatrzymanie stanów propagacji. – Doug