Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ajax i adres z #
Forum PHP.pl > Forum > XML, AJAX
Bart123
Mam coś takiego:


$("a[href*='" + location.pathname + "']").addClass("current-menu-item"); });

Ale mój adres wygląda tak: Adres/#/tytuł

Jak zapisać tą formułkę powyżej, by uwzględnić # w adresie?

Z góry dziękuję za pomoc. Dla Was to pewnie łatwizna.

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

http://www.w3schools.com/jsref/obj_location.asp
Bart123
Wielkie dzięki trueblue smile.gif

Myślałem, że zadziała, ale nie działa sad.gif

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


Ja mam stronę przeładowywaną ajaxem - czy to może mieć znaczenie?
trueblue
A zmienia się hash w pasku adresu?
Bart123
Powiem w ten sposób.

Adres w pasku adresu wygląda tak

ADRES/edukacja

Ale w menu Wordpressa - jest wpisany adres ADRES/#/edukacja i taka pozycja jest dodana w menu. Tylko tego hasha nie pokazuje w URL.

Ale zmienia się np z edukacja na zainteresowania itd.
trueblue
Jeśli nie ma w pasku adresu hasha, to w ogóle go nie badaj i nie zajmuj się nim.
Porównuj dokładnie to co masz w pasku i odnośniki w linkach.
Bart123
Wiesz co jest moim celem?

Kiedy adres zmienia się z edukacja na zainteresowania - niezależnie od tego czy w coś klinąłem czy nie - dodaj klasę current do aktualnego linku. Stąd potrzebny mi jest hash. TYlko nie wiem co w takim razie zrobić, by on był widoczny w pasku adresu.

http://adres.c0.pl/#/edukacja/

Taki adres mam podany w menu. Ale jak już klikam, hasha nie ma. To oczywiście nie jest adres strony właściwy. Zastępuję umyślnie pierwszą część słowem adres.
trueblue
Jeśli będziesz mieć hash, to i tak musisz obsłużyć jakieś zdarzenie badające jego zmianę.
Podejrzewam, że masz nawigację opartą o HTML5 History, więc zamiast kombinować z hashem i zdarzeniem onhashchange, obsłuż onpopstate.

Ostatecznie, najbardziej toporne rozwiązanie, to wywoływać cyklicznie jakąś funkcję i wtedy badać zmianę adresu.
Bart123
To nie działa w ogóle sad.gif pewnie coś źle wpisałem.

[JAVASCRIPT] pobierz, plaintext
  1.  
  2. jQuery(document).ready(function(){
  3.  
  4. jQuery(window).on('popstate', 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


Szkoda, że sam nie potrafię ajaxować linków i muszę używać zakichanej wtyczki sad.gif


Trueblue wspomniałem już, że funkcja .on("popstate" w ogóle nic u mnie nie wywołuje.

Mógłbyś podać przykład lub ewentualnie zajrzeć w moją funkcję i ją poprawić, jeżeli coś jest tam nie tak?
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.