Aktualizacja: Wygląda na to, że wewnętrzne z jQuery UI zmieniły się od czasu, kiedy ten odpowiedział i wypalania zdarzenie już nie działa.
Nie można już bezpośrednio wywołać zdarzenia, ponieważ zmienna rozmiar wtyczki został zasadniczo zmieniony. It resizes as the mouse is dragged rather than syncing items up at the end. Dzieje się tak, słuchając wewnętrznego zdarzenia propagacji resize
dla skalowalnych wtyczek, które są is now fired by the _mouseDrag
handler. Ale zależy to od zmiennych ustawionych po drodze, więc samo strzelanie, nawet wewnętrznie, nie pomoże.
Oznacza to, że nawet nadpisanie jest w najlepszym wypadku niechlujne. Zalecam po prostu ręczną zmianę rozmiaru elementów alsoResize
bezpośrednio, niezależnie od widgetu interfejsu użytkownika, jeśli jest to możliwe.
Ale dla zabawy powiedzmy, że tak nie jest. Problem polega na tym, że elementy wewnętrzne wtyczki ustawiają różne właściwości odnoszące się do poprzedniej i aktualnej pozycji myszy, aby wiedzieć, jak wiele zmienić. Możemy nadużycie używać, aby dodać metodę do widgetu, tak:
$.widget("ui.resizable", $.ui.resizable, {
resizeTo: function(newSize) {
var start = new $.Event("mousedown", { pageX: 0, pageY: 0 });
this._mouseStart(start);
this.axis = 'se';
var end = new $.Event("mouseup", {
pageX: newSize.width - this.originalSize.width,
pageY: newSize.height - this.originalSize.height
});
this._mouseDrag(end);
this._mouseStop(end);
}
});
To jest właśnie tworzenie zdarzeń myszy, że widżet resizable
się szuka i zwalniania tych. Jeśli chcesz zrobić coś resizeBy
byłoby jeszcze prostsze koniec ponieważ wszystko dbamy o to delta:
var end = $.Event("mouseup", { pageX: newSize.width, pageY: newSize.height });
Można by wywołać metodę $.widget()
po jQuery UI i przed tworzenia .resizable()
instancji i Wszystkie będą miały metodę resizeTo
. Ta część nie ulegnie zmianie, to po prostu:
$(".selector").resizable({ alsoResize: ".other-selector" });
Następnie na zmianę rozmiaru, można by nazwać ten nowy resizeTo
metody takie jak to:
$(".selector").resizable("resizeTo", { height: 100, width: 200 });
to będzie działać jako jeśli natychmiast zaciągnął go do rozmiar. Istnieje oczywiście kilka pułapek tutaj:
- Oś
"se"
nabiera chcesz zmienić rozmiar prawym dolnym rogu - Wybrałem to dlatego, że jest zdecydowanie najbardziej wspólnego scenariusza, ale może po prostu zrobić to parametr.
- Trochę zaabsorbujemy wewnętrzne wydarzenia, ale celowo używam możliwie jak najmniej szczegółów wewnętrznych implementacji, więc jest to mniej prawdopodobne w przyszłości.
- Mogłoby to całkowicie zepsuć w przyszłych wersjach jQuery UI, starałem się tylko zmniejszyć szanse na to.
You can play with it in action with a fiddle here i the resizeBy
version here.
odpowiedź oryginalny:
Można to zrobić:
$(".selector").trigger("resize");
alsoResize
wewnętrznie samojezdne górę obsługi do zdarzenia resize
, więc wystarczy, aby wywołać że :)
Najbardziej oczywiste rozwiązanie, musiałem być oślepiony przez umysł :) – JohnM2
Nie widzę tam żadnych parametrów rozmiaru ani odległości, czy mogę zapytać, jak to zrobiłeś? –
wow to świetna metoda, aby wiedzieć. możesz również wywołać inne typy zdarzeń, np. "dialogresizestop". – alfred