Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> jquery ui autocomplete - zastosowanie pętli
niebieszki
post
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
[JAVASCRIPT] pobierz, plaintext
  1. $( '#product_name\\[1\\]' ).autocomplete({
  2. source: function(req, add){
  3. $.ajax({
  4. url: base_url + 'shop/bill/search_product',
  5. dataType: 'json',
  6. type: 'POST',
  7. data: req,
  8. success: function(data){
  9. if(data.response =='true'){
  10. add(data.message);
  11. }
  12. }
  13. });
  14. },
  15. minLength: 1,
  16. select: function(event, ui){
  17. $('#sell_price\\[1\\]').val(ui.item.price);
  18. $('#product_id\\[1\\]').val(ui.item.id);
  19. }
  20. });
[JAVASCRIPT] pobierz, plaintext


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:

[JAVASCRIPT] pobierz, plaintext
  1. var i=0;
  2. while(i <= 100){
  3. $( '#product_name\\['+i+'\\]' ).autocomplete({
  4. source: function(req, add){
  5. $.ajax({
  6. url: base_url + 'shop/bill/search_product',
  7. dataType: 'json',
  8. type: 'POST',
  9. data: req,
  10. success: function(data){
  11. if(data.response =='true'){
  12. add(data.message);
  13. }
  14. }
  15. });
  16. },
  17. minLength: 1,
  18. select: function(event, ui){
  19. $('#sell_price\\['+i+'\\]').val(ui.item.price);
  20. $('#product_id\\['+i+'\\]').val(ui.item.id);
  21. }
  22. });
  23. i++;
  24. };
[JAVASCRIPT] pobierz, plaintext

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?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
erix
post
Post #2





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)
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 20:25