![]() |
![]() |
![]() ![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 30.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Witam posiadam zmienne o id tablicowych i chciałbym aby poniższa funkcja odnosiła się do nich wszystkich
Funkcja ta to jquery ui autocomplete... działajaca porprawnie dla elementy 1 z tablicy. Oto jej kod
Chciałbym dodać pętle która wykona autocomplete dla wszystkich zmiennych z tablicy (no powiedzmy aby było prościej to dla 100 pierwszych) nie tylko dla 1 elementu więc zmieniłem kod na taki:
Podpowiedz autocomplitera nadal działają przy takiej deklaracji lecz niestety już zmienne nie są dodawane do pól #sell_price i #product_id. Gdzie może być błąd? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 654 Pomógł: 121 Dołączył: 27.10.2007 Skąd: Poznań, Łódź Ostrzeżenie: (0%) ![]() ![]() |
Po co pętla.... Nie lepiej skorzystać z funkcji jquery .each(). Jednym z warunków skorzystania z tego rozwiązania jest zmiana selektora jquery, któy pobierasz elementy na których uruchomisz funkcję .autocomplete(). Sugerowałbym coś w stylu $('[id^="product_name"]')
Nie sprawdzałem tego selektora, ale możesz odpalić go z poziomu konsoli firebuga i sprawdzić czy pobierze pełną kolekcję elementów Pozdrawiam |
|
|
![]()
Post
#3
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Ale to i tak mało wydajne rozwiązania. Nie możesz dodać klasy do tych obiektów i załatwić wszystkiego jednym selektorem?
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 30.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
no mogę dodać klasę do każdego inputa ale jak potem z takiej klasy skorzystać w kodzie z pierwszego postu?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 782 Pomógł: 153 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
Niewydajne? W jakim sensie? Przecież to jest odpalane raz w całym skrypcie - dłużej będą trwać odpowiedzi na zapytania AJAXowe. Poza tym nie jestem pewien czy silnik jQuery domyślnie nie zapamiętuje wyników działania selektora. Nie łapię sensu takiej optymalizacji, przynajmniej nie tutaj.
|
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat ale jak potem z takiej klasy skorzystać w kodzie z pierwszego postu? Zmieniasz tylko selektor. (IMG:style_emoticons/default/wink.gif) Cytat Niewydajne? W jakim sensie? Przecież to jest odpalane raz w całym skrypcie - dłużej będą trwać odpowiedzi na zapytania AJAXowe. Nie do końca. Cytat Poza tym nie jestem pewien czy silnik jQuery domyślnie nie zapamiętuje wyników działania selektora. Owszem, zapamiętuje, ale najpierw trzeba takowy selektor wywołać. A 100 wywołań unikalnych nie podlegaja zcache'owaniu. Ponowne wywołanie selektora, który odwołuje się w ten sam sposób do elementu już owszem. Kod while(i <= 100){ $( '#product_name\\['+i+'\\]' ) To jest 100 różnych wywołań. Selektor klasy będzie wydajniejszy -> tylko jedno wywołanie + wewnętrzne optymalizacje. Zresztą, sprawdź sobie sam. (IMG:style_emoticons/default/wink.gif) |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 782 Pomógł: 153 Dołączył: 21.07.2010 Ostrzeżenie: (0%) ![]() ![]() |
A, ty do tego pijesz (IMG:style_emoticons/default/smile.gif) Pierwszy kod oczywiście że jest niewydajny (choć można go ulepszyć). Ja mówiłem to w odniesieniu do rozwiązania @askone. Rozwiązanie z klasą czasami też nie jest najwydajniejsze (chyba IE dalej nie zaimplementował getElementsByClass), ale to już szukanie dziury w całym.
|
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat Rozwiązanie z klasą czasami też nie jest najwydajniejsze (chyba IE dalej nie zaimplementował getElementsByClass) Już pod IE8 jest wyjście z querySelector. (IMG:style_emoticons/default/wink.gif) Nie wiem, jak jest to we frameworkach, ale śmiem twierdzić, że jest to pierwsza z metod, która jest wykrywana. |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 27 Pomógł: 0 Dołączył: 30.09.2010 Ostrzeżenie: (0%) ![]() ![]() |
Koledzy a może jakieś konkrety?
erix czy mogłbyś coś więcej o tych klasach? mam dodać do kazdej tablicy inputów jakąs konkretną klasą tylko jak wtedy rozpoznać do jakiego pola powinna powedrować wartośc z autocomplitera? |
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
To są właśnie konkrety - dodaj do tych wszystkich pól jednakową klasę, z kod dodawania listy autocomplete wywal pętlę i zmień selektor na klasę.
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 16:43 |