Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Funkcja addClass, która działa tylko raz
Forum PHP.pl > Forum > XML, AJAX
Bart123
Ta sytuacja jest dziwna. Rozkładam mój kod javascript na części pierwsze, żeby było łatwiej zrozumieć. Wszystko znajduje się w pliku myjquery.js i jest ładowane w nagłówku. Gdyby ktoś chciał od razu przejść do sedna, to ostatnie linijki pokazują co nie działa.

[JAVASCRIPT] pobierz, plaintext
  1.  
  2.  
  3. $(window).load(function down() {
  4. var tutaj = jQuery('.wrapper').offset().top;
  5. jQuery('html, body').animate({scrollTop: tutaj}, 'slow');
  6.  
  7. return false;
  8. });
  9.  
[JAVASCRIPT] pobierz, plaintext


Ta część powoduje przewinięcie strony pod reklamę. DZIAŁA PRAWIDŁOWO!

Kolejna część:

[JAVASCRIPT] pobierz, plaintext
  1.  
  2. jQuery(document).ready(function(){
  3.  
  4. $('.nav-menu li a').click(function() {
  5. $('.current-menu-item').removeClass("current-menu-item");
  6. $("a[href*='" + location.pathname + "']").addClass("current-menu-item"); });
  7.  
  8. return false;
  9.  
  10. });
  11.  
[JAVASCRIPT] pobierz, plaintext


Powoduje zmianę klasy linku na AKTYWNY, kiedy zostatniie wybrana jakaś inna pozycja w menu. DZIAŁA PRAWIDŁOWO.

Kolejna część służy natomiast do wyzerowania klas wszystkich linków na zwykły link, kiedy klikamy na stronę główną.

[JAVASCRIPT] pobierz, plaintext
  1.  
  2. jQuery(document).ready(function(){
  3.  
  4. $('.home').click(function() {
  5. $('.current-menu-item').removeClass("current-menu-item");
  6.  
  7. return false;
  8.  
  9. });
  10. });
  11.  
[JAVASCRIPT] pobierz, plaintext
- DZIAŁA PRAWIDŁOWO!

PRZY OSTATNIEJ CZĘŚCI POJAWIA SIĘ PROBLEM.

[JAVASCRIPT] pobierz, plaintext
  1.  
  2. jQuery(document).ready(function(){
  3.  
  4. $('.pagination li a').click(function() {
  5. $('.current-menu-item').removeClass("current-menu-item");
  6. $("a[href*='" + location.pathname + "']").addClass("current-menu-item"); });
  7.  
  8. return false;
  9. });
  10.  
[JAVASCRIPT] pobierz, plaintext


Ta część ma działać po wybraniu linku z diva o klasie pagination - stronicowanie, który znajduje się u dołu strony.

Gdy kliniemy na strzałkę do następnej podstrony, klasa linku w głównym menu (w nagłówku) , ma zmienić się na AKTUALNY LINK.

Problem w tym, że działa ona tylko raz, po dosłownym przeładowaniu strony. Każde kolejne kliknięcie w cokolwiek - wyłącza działanie tylko tej ostatniej funkcji.

Ktoś ma pomysł, dlaczego?
trueblue
Jeśli linki paginacji są przeładowywane dynamicznie (tzn. są wstawiane na stronę żądanie ajaxowym), to powinieneś użyć live events, dla tych linków.
Bart123
Oczywiście są. Całość jest przeładowywana w ten sposób.

Ok, a jeżeli to nie byłby problem, to jak taka konstrukcja wygląda?

Oczywiście sam też zaraz zacznę szukać. To nie jest tak, że ja pytam i oczekuję na gotowca - sam nie robiąc nic.

Ale bardzo proszę o jakąś "głębszą" podpowiedź.


Prawdopodobnie chodzi o coś takiego?

.live("click",function()

Przetestuję jak tylko zjem obiad smile.gif Na koniec wystawię wszystkim plusa za podpowiedzi - oczywiste smile.gif
trueblue
.live w starszej wersji jQuery, w nowszej selektor istnieje jako któryś tam parametr w funkcji .on
Bart123
Użyłem 11.1. To uznajemy za starszą ? smile.gif

PO STAREMU KOMPLETNIE NIE DZIAŁA.

Napisałem w ten sposób.

[JAVASCRIPT] pobierz, plaintext
  1.  
  2. jQuery(document).ready(function(){
  3.  
  4. $('.pagination li a').live("click", function() {
  5. $('.current-menu-item').removeClass("current-menu-item");
  6. $("a[href*='" + location.pathname + "']").addClass("current-menu-item"); });
  7.  
  8. return false;
  9. });
  10.  
[JAVASCRIPT] pobierz, plaintext


Teraz nie działa nawet jeden raz.
Turson
11.1 to raczej wersja futurystyczna biggrin.gif
Pokaż kod zmianach
Bart123
Turson - miałem na myśli 1.11.1 oczywiście smile.gif

[JAVASCRIPT] pobierz, plaintext
  1. jQuery(document).ready(function(){
  2.  
  3. $(document).on( "click", ".pagination li a", function() {
  4. $('.current-menu-item').removeClass("current-menu-item");
  5. $("a[href*='" + location.pathname + "']").addClass("current-menu-item"); });
  6.  
  7. return false;
  8. });
[JAVASCRIPT] pobierz, plaintext


NIE DZIAŁA NAWET RAZ.

Do paginacji i ajaxowania używam w ogóle dwóch wtyczek WP. Ten plik js ładowany jest jako dodatkowy i po załadowaniu wszystkiego ma to zmieniać.

Pomóżcie bo już mam tego szczerze dość sad.gif
tzm
Cytat(Turson @ 26.09.2014, 13:16:45 ) *
fururystyczna

Jaka?
Bart123
Paginacja nie działa ponieważ pagination jest umieszczony w Content, przeładowywanym przez ajaxowanie.

Problem w tym, że ona musi być w content, bo inaczej nie przerzuca wszystkich stron, a tylko pierwszą - w jedną lub w drugą stronę. sad.gif

Da się ten shit zrobić w momencie, kiedy cały content razem z paginacją jest ajaxowany? sad.gif


Ja nie mam już siły. Gdyby ktoś na coś wpadł, dajcie mi znać. Chwilowo usuwam paginację.
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.