2011-10-23 11 views
7

Używam jquery uniform w jednym z projektów, nad którymi pracuję. Ponieważ to jest panel administracyjny, naprawdę nie mam opcji do pokazania. Wyjaśnię mój problemJednolita aktualizacja Jquery nie działa

To, co próbuję zrobić, jest dość proste. Dodaję niektóre elementy formularza (jak zaznacz, pole wyboru, wpisywanie tekstu) do strony z ajaxem.

Każda czynność działa z wyjątkiem zmiany stylu dynamicznie dodawanych elementów formularza.

Czy ktoś ma podobny problem? Nawet moje funkcje onClick, onChange działają bez problemu (dynamicznie dodawane elementy formularzy), to po prostu, $.uniform.update(); wydaje się nie działać.

Myślałem, że przetwarzanie danych może zająć więcej czasu, więc $ .uniform.update(); jest wywoływana przed przetwarzaniem danych, więc próbowałem $.ajax z async: false bez powodzenia.

Będę zadowolony, jeśli ktoś, kto doświadczył takiego problemu lub kto zna rozwiązanie, może mi pomóc w rozwiązaniu tego problemu.

Z góry dziękuję.

Odpowiedz

14

Po wywołaniu $.uniform(), zbiera wszystkie określone elementy do wewnętrznej tablicy dotkniętych elementów. Gdy zadzwonisz pod numer $.uniform.update(), po prostu zmienisz te elementy, które już zostały zebrane.

Aby dodać dodatkowe elementy, może być konieczne ponowne wywołanie $.uniform(), przekazując selektor identyfikujący tylko te nowe, dynamicznie dodawane elementy.

+0

Dziękuję za szybką odpowiedź. Niestety nie działa. – Revenant

+3

Nie mam pojęcia, dlaczego to działało $ ("wybierz, wprowadź: pole wyboru, wejście: radio, wejście: plik") .uniform(); $ .uniform.update(); bez .UPdate() nadal nie działa i nie rozumiem, dlaczego muszę używać .update() po dodaniu elementów do uniformu. – Revenant

+0

$ .uniform.update(); pracował dla mnie :) dziękuje –

5

obciążeniowy(), gdy ustalenie promblem

$('#dialog').load(url + ' #forload', function() {$('#dialog').find('select').uniform(), $('#dialog').find('input:checkbox').uniform()}) 
+0

Dziękuję - miałem problem z uzyskaniem uniformu do stylizacji wybranego elementu po użyciu .load() i to całkowicie naprawiło to dla mnie. – MikeH

1

Innym rozwiązaniem może być w ten

setTimeout("$('.uniform_element').uniform();",200); 

200 lub większa liczba może być konieczne.

+0

To rozwiązanie jest rzeczywiście zalecane dla jednolitego odczytu i [relewantnego problemu # 270] (https://github.com/pixelmatrix/uniform/issues/270) –

+0

To rozwiązanie faktycznie działało. W moim przypadku pola wyboru były w środku listy rozwijanej – Prasanth

1

Czy próbowałeś tego?

$.uniform.update("#select_element_id"); 

W moim przypadku rozwiązał problem.

stary mundur wersji może mieć problem, jak masz.

0

Użyj tej $ (". ElementClass"). Uniform();