Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] Wartość inna niż ustawiona przed chwilą
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
starach
Cześć,

Zrobiłem sobie slideshow. Niestety z niewyjaśnionych przyczyn wartość css('left') po ponownym odczytaniu jest zupełnie inna niż ustawiona przed chwilą.
  1. <script type="text/javascript">
  2. $('#slideshow .slides ul').css('left', $iNewLeft * -1);
  3. console.log("Nowa odległość: " + $iNewLeft * -1); // -840 - Tyle powinno być
  4. console.log("Nowa odległość2: " + $('#slideshow .slides ul').css('left')); // -1008px - Że jak?
  5. </scrpit>
everth
Ile elementów DOM podpada pod ten selektor? Coś mi mówi że ustalasz atrybut left dla zbioru elementów a później go pobierasz. Nie wiem jak jQuery zachowuje się gdy gdy pobiera wartość stylu dla grupy elementów. Ewentualnie prześledź na drzewie atrybuty style (tam jQuery zapisuje swoje wartości) dla tego selektora i zobacz czy czymś się nie różnią od zdeklarowanej przez ciebie.
sh3d2
jesli tych elementow jest wiecej, to chyba przydaloby sie uzyc .each()
Kod
$('.foo').each(function(){
   $(this).css('left', ...)
})


pozdrawiam
starach
Taki element jest jeden.
  1. <!-- SLIDESHOW -->
  2. <div id="slideshow">
  3. <a class="prev" title="Poprzednie slajdy"><img src="/sites/all/themes/TheGamer/images/btn-slider-prev.jpg" alt="Poprzednie slajdy" /></a>
  4. <div class="slides">
  5. <ul>
  6. <li><img src="http://www.stockvault.net/data/s/113497.jpg" /><div class="title">Lorem ipsum dolor sit</div></li>
  7. <li><img src="http://www.stockvault.net/data/s/100177.jpg" /><div class="title">Lorem ipsum dolor sit</div></li>
  8. <li><img src="http://www.stockvault.net/data/s/101916.jpg" /><div class="title">Lorem ipsum dolor sit</div></li>
  9. <li><img src="http://www.dreamstime.com/animal-steps-in-snow-thumb12853223.jpg" /><div class="title">Lorem ipsum dolor sit</div></li>
  10. <li><img src="http://www.dreamstime.com/animal-eggs-thumb15876342.jpg" /><div class="title">Lorem ipsum dolor sit</div></li>
  11. <li><img src="http://www.dreamstime.com/animal-cat-thumb15385101.jpg" /><div class="title">Lorem ipsum dolor sit</div></li>
  12. <li><img src="http://www.dreamstime.com/green-nature-thumb596309.jpg" /><div class="title">Lorem ipsum dolor sit</div></li>
  13. <li><img src="http://www.dreamstime.com/office-in-nature-thumb3256171.jpg" /><div class="title">Lorem ipsum dolor sit</div></li>
  14. <li><img src="http://www.dreamstime.com/nature-tree-thumb16030502.jpg" /></li>
  15. <li><img src="http://www.dreamstime.com/gift-of-the-nature-thumb15977958.jpg" /></li>
  16. <li><img src="http://www.dreamstime.com/nature-abstract-thumb3615419.jpg" /></li>
  17. <li><img src="http://www.dreamstime.com/nature-path-in-forest-with-sunshine-thumb8241130.jpg" /></li>
  18. <li><img src="http://www.dreamstime.com/nature-walk-thumb8436665.jpg" /></li>
  19. <li><img src="http://www.dreamstime.com/save-the-nature-thumb15696583.jpg" /></li>
  20. </ul>
  21. </div>
  22. <a class="next" title="Następne slajdy"><img src="/sites/all/themes/TheGamer/images/btn-slider-next.jpg" alt="Następne slajdy" /></a>
  23. <div class="preloader"><img src="/sites/all/themes/TheGamer/images/Preloader.gif" alt="Preloader" /></div>
  24. </div>
  25. <input type="button" onclick="alert($('#slideshow .slides ul').css('left'))" value="Click" />
  26. <!-- /SLIDESHOW -->
Kiedy kliknę ponownie "next" powinien dodać kolejne 840 do atrybutu left ale ponownie dodaje 1008 ?
everth
Cytat
Kiedy kliknę ponownie "next" powinien dodać kolejne 840 do atrybutu left ale ponownie dodaje 1008

Jak wyliczasz zmienną iNewLeft ? Sprawdź co zawiera i jaki wynik daje przemnożenie jej przez -1. Podejrzewam że pobierasz początkową wartość przesunięcia z DOM - ona zwraca 'auto' albo wartość+px, tego się nie da przemnożyć.
sh3d2
Ja rowniez uwazam, ze blad wynika z "dziwnej" wartosci zmiennej iNewLeft (zapewne dodatek w postaci "px")
pobieraj wartosc left za pomoca $('.foo').position().left lub parseInt($('.foo').css('left'))

#luq
@starach skrypt jest Twój tak?
Powiedz mi, masz to zrobione na niewidocznym pasku przewijania, tak? ;>
starach
Tak to taki slideshow, ale znalazłem przyczynę. Okazało się że to była wina Google Chrome. Zapomniałem, że wieki temu włączyłem sobie kanał developerski i najwyraźniej w ostatniej aktualizacji był błąd. Wywalenie GC i zainstalowanie go z kanału stable rozwiązało problem.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.