używam kodu, który wygląda tak:jquery.width return 0 na obrazek
img.load(function(){
// do some stuff
$(this).width();
});
W moim zwrotnego rozmiar obrazu jest zawsze 0. To może mieć coś wspólnego z tym, ale moje zdjęcia są ładowane lokalnie.
Ale w prawdzie, jeśli robię this.width, będę uzyskać oczekiwaną szerokość i wtedy mogę zrobić jakiś obliczeń stąd zmienić moje okno ExtJS.
Po kilku próbach, zdaję sobie sprawę, że jeśli to zrobię $ (this) wszystkie atrybuty I zmiany nie wydają się mieć żadnego wpływu w ogóle.
Wykonanie $(this).width(40);
nie zmieni szerokości mojego obrazu, ale zmiana this.width = 40
zmieni szerokość mojego obrazu. To tak, jakby robi $(this)
kopiuje mój HTMLImageElement ramach nowego elementu i te zmiany zostaną zastosowane tylko wtedy, dodałem do Domu ponownie, aby zastąpić starą.
nie jestem tak pewny, aby zrozumieć, co się tam dzieje.
Edit
To właśnie moja zmienna img
zawiera.
img = $('<img>');
img.attr('src', '....image');
Edycja 2
To naprawdę nie zmienia faktu, że jQuery nie obsługuje rozmiar obrazu w pamięci obrazy, ale czułem, że byłoby dobrze dla wszystkich osób korzystających z ExtJS aby nie powtórzyć mój błąd. Jednym z największych problemów w moim przypadku jest to, że obiekt, którego użyłem był prawidłowym obiektem, ale ponieważ używam ExtJs, przypadkowo popełniłem głupi błąd. Tworzę okna w ten sposób ...
Ext.create('Ext.Window',
// some settings
items: [{
html: img.wrap('<div>').parent().html(),
// etc
Innymi słowy, wydarzenie stworzyłem był na img, ale nigdy naprawdę dodaje img
do DOM. ExtJs dodał tekst HTML do DOM, który utworzył nowy obiekt, który nie może być modyfikowany przez zdarzenie i tak dalej.
Tak więc muszę utworzyć identyfikator, aby znaleźć nowy element i wszystko to musi zostać wykonane po zakończeniu połączenia pod numerem modalWindow.show()
. Po tym wszystko działa idealnie.
Aby zmienić rozmiar okna, jeśli wymiary są ustawione, można ustawić je ponownie na null
i wykonać wywołanie doLayout w oknie, a następnie ponownie obliczyć okienko.
możesz pisać związane HTML? Ponadto, nie trzeba jQuery do tego. Powinieneś być w stanie uzyskać dostęp do właściwości w prostej javascript – pixelbobby
Czym dokładnie jest wartość zmiennej 'img' w tym kodzie? Czym jest ona ustawiona? – Pointy
Pierwszym parametrem [.load() '] (http://api.jquery.com/load/) powinien być adres URL, który chcesz wczytać, a następnie pełna funkcja. Czym jest "img"? – sachleen