Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [JavaScript]Przesuwanie ofert.
MeGusta
post
Post #1





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 6.07.2015

Ostrzeżenie: (10%)
X----


Witam,
Mam problem z zrobieniem przesuwania ofert, po kliknięciu w div który ma data-id="x" funkcja generuje z tablicy kod html a następnie wstawia go do diva .galery, problem w tym, że po kliknięciu na .move-left przesuwa się tylko o jedno lub wogole, dodatkowo funkcja generate_min ktora generuje html z miniaturkami zdjęć z tej samej tablicy generuje ostatnie zdjecie + nowe, a nie tylko nowe.

Klikniecie na oferte:

  1. $('.realize').click(function(){
  2.  
  3. $this = $(this);
  4.  
  5. var data = $this.attr('data-id');
  6.  
  7. $('body').append('<div class="black-screen"><div class="galery">' + generateview(data) + '</div></div>');
  8.  
  9. $('.move-right').click(function(){
  10. data++;
  11. $('.galery').html(generateview(parseInt(data) + 1))
  12. console.log(parseInt(data) + 1)
  13. });
  14.  
  15. $('.move-left').click(function(){
  16. $('.galery').html(generateview(parseInt(data) - 1))
  17. console.log(parseInt(data) - 1)
  18. data--;
  19. });
  20.  
  21. });


Funkcja generująca miniaturki:

  1. var min_img_for = [];
  2.  
  3. function generate_min(data)
  4. {
  5. $.each(data_realize[data][7], function(key, value) {
  6. min_img_for += '<div class="img-sml"> ' + value + ' </div>';
  7. });
  8.  
  9. return min_img_for;
  10. }


Do funkcji generateview podaję id z atrybutu data-id po którym wyswietlam dane z tablicy.

Struktura html:
  1. <div data-id="1" class="realize">
  2. <img src="img/realizacja-1.png" alt="" />
  3. <div class="realize-hover"></div>
  4. <div class="desc-realize">
  5. Tablice Reklamowe (Billboard)
  6. </div>
  7. </div>
  8. <div data-id="2" class="realize">
  9. <img src="img/realizacja-1.png" alt="" />
  10. <div class="realize-hover"></div>
  11. <div class="desc-realize">
  12. Tablice Reklamowe (Billboard)
  13. </div>
  14. </div>
  15.  
  16. i tak dalej


Sama tablica wygląda tak:
  1. var data_realize =
  2. [[
  3. 0,
  4. '<img src="./img/big-img-realize.png" />',
  5. 'Bilboard dla <br>"Galeria Krakowska"',
  6. 'Lorem Ipsum jes...',
  7. '21 dni',
  8. '5m x 2.5m',
  9. '500 zł',
  10. ['<img src="./img/min-image-realize.png" />', ''] // tu sa miniaturki
  11. ],
  12. ];


Ten post edytował MeGusta 28.08.2016, 13:07:20
Go to the top of the page
+Quote Post
2 Stron V   1 2 >  
Start new topic
Odpowiedzi (1 - 19)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Sieczka... totalny brak logiki i jeden wielki haos....


Na poczatek masz od razu data zrzutowac na liczbe i potem mozesz normalnie dodawac i odejmowac.
var data = parseInt($this.attr('data-id'));


Jak juz raz odjales/dodales to nie rob tego ponownie w przekazywaniu do parametru.

No i patrz co piszesz bo wyglada jakbys losowo stukal w klawiature


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
MeGusta
post
Post #3





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 6.07.2015

Ostrzeżenie: (10%)
X----


Poprawione:
  1. $('.realize').click(function(){
  2.  
  3. $this = $(this);
  4.  
  5. var data = parseInt($this.attr('data-id'));
  6.  
  7. $('body').append('<div class="black-screen"><div class="galery">' + generateview(data) + '</div></div>');
  8.  
  9. $('.move-right').click(function(){
  10. data++;
  11. $('.galery').html(generateview(data))
  12. });
  13.  
  14. $('.move-left').click(function(){
  15. $('.galery').html(generateview(data))
  16. data--;
  17. });
  18.  
  19. });


Dalej to samo, przerzuca się tylko o jedno, tak jakby data++ wykonywał się tylko raz.
Dodatkowo funkcja generate_min() tak jakby do starych zdjęć z pierwszego elementu tablicy dopisuje z drugiego elementu.

Ten post edytował MeGusta 28.08.2016, 13:18:16
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nogdzie nie widze bys aktualizowal atrybut data-id wiec dosc logiczne ze ciagle ma te sama wartosc


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
MeGusta
post
Post #5





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 6.07.2015

Ostrzeżenie: (10%)
X----


Zwiększam za każdym kliknięciem data++;
Próbowałem też:
  1. var self = $this;
  2. $('.move-right').click(function(){
  3. $('.galery').html(generateview(data))
  4. self.attr('data-id', data + 1)
  5. });


Ale dalej to samo.
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
Zwiększam za każdym kliknięciem data++;

Co z tego ze zwiekszasz jak i tak za kazdym razem to nadpisujesz o tutaj:
var data = $this.attr('data-id');

Cytat
Dodatkowo funkcja generate_min() tak jakby do starych zdjęć z pierwszego elementu tablicy dopisuje z drugiego elementu.

Bo nie zerujesz min_img_for


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
MeGusta
post
Post #7





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 6.07.2015

Ostrzeżenie: (10%)
X----


Właśnie tu problem leży, że po kliknieciu na div .realize otwiera się okno i to wszystko jest w nim generowane, nie mam pojęcia jak to var data wyrzucić poza aby się nie nadpisywało na początku.
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Dobrze by bylo jakbys to wystawil online


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
MeGusta
post
Post #9





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 6.07.2015

Ostrzeżenie: (10%)
X----


https://jsfiddle.net/9gh9h1f3/2/

Przesuwa się tymi strzałkami po prawo na dole.

Ten post edytował MeGusta 28.08.2016, 13:45:44
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




A mozesz te strzalki dac na gore? Bo na moim lapku niestety nie jestem w stanie ich siegnac sad.gif


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
MeGusta
post
Post #11





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 6.07.2015

Ostrzeżenie: (10%)
X----


Jasne, proszę bardzo.

https://jsfiddle.net/9gh9h1f3/3/
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




W prawo przesuwa ci sie tylko raz, bo jak klikniesz na to to nadpisujesz zawartosc diva nowym htmlem przez co tracisz przypisania click. Albo zainteresuj sie ON w jquery albo po kazdym nadpisaniu kodu html generuj nowe CLICK dla strzalek


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
MeGusta
post
Post #13





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 6.07.2015

Ostrzeżenie: (10%)
X----


Masz na myśli abym generował onclick dla strzałek?
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Teraz generujesz CLICK dla strzales w momencie otworzenia okna. Gdy klikasz strzalke nadpisujesz stare strzalki nowymi i nowe strzalki nie maja juz CLICK. Albo wiec uzyj ON ktore bedzie sie podczepiac pod kazde strzalki albo za kazdym nadpisaniem okna tworz CLICK na nowo


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
MeGusta
post
Post #15





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 6.07.2015

Ostrzeżenie: (10%)
X----


Kurcze nie rozumiem, moze dla tego ze dopiero zaczynam z javascriptem. Mógłbyś dać jakis przykład?
Go to the top of the page
+Quote Post
viking
post
Post #16





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


W skrócie. Każdy element tak długo ma zdarzenia, jak długo występuje w dokumencie i nie zostanie nadpisany lub zdarzenie usunięte. Chyba że zdarzenie nasłuchuje rodzic wtedy nowo utworzony element będzie wiedział jak się zachować. Tu masz to opisane.


--------------------
Go to the top of the page
+Quote Post
MeGusta
post
Post #17





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 6.07.2015

Ostrzeżenie: (10%)
X----


Jeśli uzyję .on('click', function(){}) i potem .off() stracę this i np. wyłaczanie okna nie bedzie działac.
Go to the top of the page
+Quote Post
viking
post
Post #18





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Dlaczego masz this stracić? Albo można je przepisać do innej zmiennej albo przyjrzyj się w konsoli takim właściwościom jak event.delegateTarget


--------------------
Go to the top of the page
+Quote Post
MeGusta
post
Post #19





Grupa: Zarejestrowani
Postów: 155
Pomógł: 0
Dołączył: 6.07.2015

Ostrzeżenie: (10%)
X----


Kurcze, siedze od rana nad tym i chyba nic sam nie wskóram, za mało jeszcze potrafię, cały czas sie uczę. Mógłby ktoś pomóc mi z tym kodem? Bardzo bym prosił.
Go to the top of the page
+Quote Post
nospor
post
Post #20





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Jedyne co miales zrobic to zamienic CLICK na ON. W czym problem?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 22.08.2025 - 00:50