Ich habe einige Fragmente, die auf Klick laden. Ich scrolle auch die Seite nach oben auf diesen Links, wie auf css-tricks gefunden. Ich erhalte die folgende Fehlermeldung: Nicht abgefangene Fehler: Syntaxfehler, unerkannt Ausdruck: # Fragment_NamejQuery nicht erkannt Ausdruck mit Hashbang
Meine js
$(function() {
$('a[href*=#]:not([href=#])').click(function() {
if (location.pathname.replace(/^\//,'') == this.pathname.replace(/^\//,'') && location.hostname == this.hostname) {
var target = $(this.hash);//this is where the error is
target = target.length ? target : $('[name=' + this.hash.slice(1) +']');
if (target.length) {
$('html,body').animate({
scrollTop: target.offset().top
}, 1000);
return false;
}
}
});
});
HTML
<li><a href="#!Fragment_Name">Link Text</a></li>
I var target = $ ($ (dies versucht haben, .hash)); keine Freude
Alles funktioniert immer noch, ich will nur wissen, wie man das behebt und den Fehler von der Konsole entfernt.
Ich ersetzte var target = $ (this.hash); mit var target = $ (this.hash.replace (/ ([!])/g, "\\ $ 1")); Der Fehler lautet jetzt Uncaught Error: Syntaxfehler, nicht erkannter Ausdruck: [Name =! Fragment_Name] –
@DirtyBirdDesign Das ist Ihr zweiter Selektor ('$ ('[name =' + this.hash.slice (1) + ']'); '). Fügen Sie einfach Zitate nach dem '=' und vor ']' hinzu: '$ ('[name =' '+ this.hash.slice (1) +' ']');' –
Ausgezeichnet! die Kombination der beiden funktionierte. Ich verstehe nicht, was das/[!]/G genau macht, ich weiß, dass es dem "!" aber nicht warum. Der zweite Teil, den ich bekomme, entgeht dem "#" in der Scheibe. Vielen Dank, tolle Antwort! –