Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Ajax - ajaxowanie linków
Forum PHP.pl > Forum > XML, AJAX
Bart123
Witam. Zrobiłem coś takiego na szablonie WP Twenty Twelve, ale to ajaxowanie nie działa. Konsola Firefox wyrzuca, że metoda preventDefault(); jest przestarzała i i tak przeładowuje stronę, zamiast normalnie ajaxować link. Moje linki wyglądają w ten sposób MÓJADRES/?page_id="15".

Wydaje mi się, że z zapisem budowy linku w skrypcie może być coś nie tak.

Proszę Was o pomoc. Moglibyście to sprawdzić? Cały kod pisałem sam, wg. tutorialu - potem przerobiłem go na potrzeby swojej strony. Tyle, że w tutku działa, a u mnie nie.

CODE

$(function() {

$("column-wrap").append("<img class='ajaxloader' src='images/ajax-loader.gif' />");

var $content = $(".content"),
URL = ' ',
siteURL = "http://" + top.location.host.toString(),
$internalLinks = $('a[href]^=' + siteURL + ']'),
$ajaxSpinner = $(".ajax-loader"),
$el, allLinks = $("a");

$internalLinks.each(funtion() {

$(this).atrr("href", "#" + this.pathname);

}).click(function() {
ajaxSpinner.fadeIn();
$content.animate({opacity: "0.1"});
$el = $(this);
$(".current_page_item").removeClass(".current_page_item");
$allLinks.removeClass(".current_menu_item");
$content.load(URL);
URL = $el.attr("href").substring(1);
$content.load(URL, function (){
$el.addClass(".current_menu_item").parent().addClass(".current_page_item");
$ajaxSpinner.fadeOut();
$content.animate({opacity: "1"});
});
event.preventDefault();
return false;
});



});

Turson
Skoro masz
event.preventDefault();
to przekaż "event" w argumencie funkcji
Bart123
Turson - bardzo dziękuję za zainteresowanie, ale jak to dokładnie zrobić ? sad.gif

Chodzi o coś takiego?

Function (event) {}?
Turson
[JAVASCRIPT] pobierz, plaintext
  1.  
  2. $(function() {
  3.  
  4. $("column-wrap").append("<img class='ajaxloader' src='images/ajax-loader.gif' />");
  5. var $content = $(".content"),
  6. URL = ' ',
  7. siteURL = "http://" + top.location.host.toString(),
  8. $internalLinks = $('a[href]^=' + siteURL + ']'),
  9. $ajaxSpinner = $(".ajax-loader"),
  10. $el, allLinks = $("a");
  11. $internalLinks.each(funtion() {
  12.  
  13. $(this).atrr("href", "#" + this.pathname);
  14. }).click(function(event) {
  15. ajaxSpinner.fadeIn();
  16. $content.animate({opacity: "0.1"});
  17. $el = $(this);
  18. $(".current_page_item").removeClass(".current_page_item");
  19. $allLinks.removeClass(".current_menu_item");
  20. $content.load(URL);
  21. URL = $el.attr("href").substring(1);
  22. $content.load(URL, function (){
  23. $el.addClass(".current_menu_item").parent().addClass(".current_page_item");
  24. $ajaxSpinner.fadeOut();
  25. $content.animate({opacity: "1"});
  26. });
  27. event.preventDefault();
  28. return false;
  29. });
  30. });
  31.  
[JAVASCRIPT] pobierz, plaintext

z resztą preventDefault() i return false robią to samo
Bart123
NIE DZIAŁA. Konsola: SyntaxError: missing ) after argument list. Próbuję to znaleźć.


Albo oślepłem, albo konsola zgłupiała. Wszystkie argumenty wyglądają na zamknięte.
Turson
literówka
$internalLinks.each(funtion()
Bart123
Nadal przeładowuje stronę sad.gif Zaraz coś mniie trafi. Wczoraj siedziałem pół doby nad tym badziewiem sad.gif

Może ten zapis linka jest zły?

ja mam adres/?page_id=15 - na przykład.

Konsola tym razem nic nie wywala. Czyli tak, jakby wszystko było dobrze. Ajaxify.js też mam wczytany do nagłówka. I nadal nie działa.
Turson
Z jakiej racji robisz click() na attr "href" zamiast na cały element...?

@edit
Dobra, sam się zamieszałem.
Bart123
Pozmienałem nazwy linków na normalne czyli np. Adres/edukacja, albo Adres/Zainteresowania. Zmieniłem nieco kod ajax wg, tutorialu z Css Tricks. Teraz wygląda to tak. ALE NADAL NIE DZIAŁA.

[JAVASCRIPT] pobierz, plaintext
  1.  
  2. (function() {
  3.  
  4. $("wrapper").append("<img class='ajaxloader' src='images/ajax-loader.gif' />");
  5.  
  6. var $content = $(".content"),
  7. URL = ' ',
  8. siteURL = "http://" + top.location.host.toString(),
  9. $internalLinks = $("a[href]^='"+siteURL+"']"),
  10. hash = window.location.hash,
  11. $ajaxSpinner = $("#ajax-loader"),
  12. $el, $allLinks = $("a");
  13.  
  14. if (hash) {
  15. $ajaxSpinner = fadeIn();
  16. $content.animate({opacity: "0.1"});
  17. $(".current_page_item").removeClass(".current_page_item");
  18. $("a[href="+hash+"]").addClass(".current_menu_item").parent().addClass(".current_page_item");
  19. hash = hash.substring(1);
  20. URL = hash;
  21. $content.load(URL, function() {
  22. $ajaxSpinner.fadeOut();
  23. $content.animate({opacity: "1"});
  24. });
  25. }
  26.  
  27. $internalLinks.each(function() {
  28.  
  29. $(this).attr("href", "#" + this.pathname);
  30.  
  31. }).click(function(event) {
  32. $ajaxSpinner.fadeIn();
  33. $content.animate({opacity: "0.1"});
  34. $el = $(this);
  35. $(".current_page_item").removeClass(".current_page_item");
  36. $allLinks.removeClass(".current_menu_item");
  37. URL = $el.attr("href").substring(1);
  38. URL = URL;
  39. $content.load(URL, function (){
  40.  
  41. $el.addClass(".current_menu_item").parent().addClass(".current_page_item");
  42. $ajaxSpinner.fadeOut();
  43. $content.animate({opacity: "1"});
  44.  
  45.  
  46. });
  47. });
  48.  
  49. e.preventDefault();
  50.  
  51. })
  52.  
[JAVASCRIPT] pobierz, plaintext


Funkcja nadal nie trybi, chociaż konsola nie wykazuje ANI JEDNEGO BŁĘDU Z JAVASCRIPT.


Moje menu wygląda mniej więcej tak: Oto fragment pliku header.php z mojej strony.


  1.  
  2. <div id="page" class="hfeed site">
  3.  
  4. <header id="masthead" class="site-header" role="banner">
  5. <a href="http://ADRES/"></a>
  6. <nav id="site-navigation" class="main-navigation" role="navigation">
  7. <h3 class="menu-toggle"></h3>
  8. <a class="assistive-text" title="Przeskocz do treści" href="#content"></a>
  9. <div class="menu-mymenu-container">
  10. <ul id="menu-mymenu" class="nav-menu">
  11. <li id="menu-item-26" class="menu-item menu-item-type-post_type menu-item-object-page menu-item-26">
  12. <a href="http://ADRES/edukacja/" title="Edukacja"></a>
  13. </li>
  14.  
  15.  


Powoli tracę cierpliwość do tego cholerstwa. Dlaczego to nie działa?
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.