2016-04-25 4 views
1

Ich habe gesucht und ich habe gesucht, was die Ursache für dieses Problem sein könnte. Aber jedes Mal, wenn ich suche, bekomme ich "wie man glattes Scrollen hinzufügt". Dies ist nicht das Problem. Ich habe ein WordPress-Setup, und reibungsloses Scrollen funktioniert in jedem Fall gut, außer dass das Ergebnis von einer JS-Datei angehängt wird.jQuery glatte Scroll bricht mit AJAX Anruf

$(document).ready(function(){ 
function descriptions(){ 
    var apiCall = '[APIRUL]'; 

    $.ajax({ 
     url: apiCall, 
     type: 'get', 
     dataType : 'json', 
     success: function(data){ 
      $.each(data, function(i, p) { 
       var name = p.name; 
       var namelc = p.namelc; //lowercase 
       var description = p.description; 
       var output = '<div id="' + namelc + '"><h3">' + name + '</h3><p>' + description + '<br /><a href="#table">back to top</a></p></div>'; 

       $('#description').append(output); 
      }); 
     }, 
     error: function(xhr, status, error) { 
      console.log(error); 
     } 
    }); 
}descriptions(); 
}); 

Alles wieder gut. Es gibt kein Problem mit der jQuery oder AJAX selbst. Aber aus irgendeinem Grund springt die "a href =" # Tabelle "" zurück in die Tabelle (oberhalb der Beschreibungen) und fügt den Hash die Adresse hinzu (zB http://example.com/somepage/#anchor) anstatt sie zu erleichtern (wie bei jedem anderen Anker Link auf die gleiche Seite. Dh es ist nichts falsch mit der glatten Schriftrolle. Etwas anderes ist störend).

Ich bin sicher, es gibt eine Erklärung und eine Lösung für dieses Verhalten. Aber ich kann es einfach nicht finden, weil ich, wie ich bereits erwähnt habe, jedes Mal, wenn ich nach "smooth scroll not working" suche, am Ende mit Tonnen von "wie man glatte Scroll-Ergebnisse hinzufügen kann" enden.

Jede Hilfe, in voller oder einen Schub in die richtige Richtung, wird sehr geschätzt! /stecken!

Antwort

0

So dank Peter Mark Antwort (danke für das wirklich ich hatte auf dieser aufgeklebt für über einen Tag, und es wäre länger ohne deine Hilfe gewesen, das ist sicher!) Ich verstand, was vor sich ging und das half, das Problem zu lösen. Fürs Erste, ohne durch Schichten von Dateien zu graben, um zu sehen, woher der anfängliche glatte Bildlauf stammt (wie der Listener genannt wird), ist dies eine funktionierende Lösung. Bringing zurück, dass schöne glatte Rolle zu allen jQuery Elemente angehängt: D

$('a').click(function(){ 
    $('html, body').animate({ 
     scrollTop: $(this.hash).offset().top 
    },350,'easeInOutExpo'); 
    return false; 
}); 

wie Peter erklärt, dies in NACH Anfügen gehen muss (sonst würden wir nur bestehende Anker werden Targeting, nicht die neuen wir sind Erstellen/Injizieren mit dem Append).

+0

Froh, dass es geholfen hat! Vergiss nicht, deine eigene Antwort zu akzeptieren. –

1

Wenn Sie JQuery Smooth scroll von h ere verwenden, scheint es, dass es wie ein Listener behandelt wird. Wenn Sie mit AJAX injizieren, gibt es keinen Listener für diesen Link. Erneutes Ausführen der binden - so etwas wie diese:.

$('#description a').smoothScroll(); 

nach dieser Zeile im Code:

$('#description').append(output); 
+0

Hmm. Interessant. Obwohl das an sich nicht gelöst wurde (gibt einen Fehler in der Konsole von "smoothScroll() ist keine Funktion"), sehe ich, wohin Sie damit gehen. Ich weiß nicht, wie die glatte Schriftrolle hinzugefügt wird (sei es durch Wordpress oder das Thema, das ich verwende). Ich denke, ich muss etwas tiefer in das Thema einsteigen. Hoffentlich geht es dir hier etwas an. – axelra82

+0

Ja, und natürlich geht das davon aus, dass Sie diese Bibliothek verwenden ... Dies ist eine der Zeiten, in denen die Schichten der Abstraktion, die mit mehreren Bibliotheken kommen, Sie verlangsamen können. –

+0

Danke für Ihre Hilfe @peter Dieses Problem ist jetzt gelöst (siehe meine Antwort unten). – axelra82