3 Stimmen

Wie man Pfund-Zeichen (#) in jQuery verweisen?

Ich habe versucht, einen neuen Weg, um eine Website mit jQuery, um dynamisch den Inhalt, wenn ein Link angeklickt wird, zu erhalten eingerichtet. Hier ist der jQuery-Code:

$(document).ready(function() {

 var content_loader = $('#content-loader');

 $('#nav ul li a').click(function () {
  $(this).closest('ul').find('li.active').removeClass('active');
  $(this).parent().addClass('active');
  content_loader.load('content/' + $(this).attr('data-name') + '.html'); 
  });

 content_loader.load('content/home.html');

});

Ich habe es so gemacht, weil ich einen Song im Hintergrund meiner Website habe, den ich immer wieder abspielen möchte und nicht jedes Mal, wenn ein Link angeklickt wird, von vorne beginnen möchte.

Das Ganze funktioniert ziemlich gut, mit Ausnahme von 2 Problemen, die ich habe.

  1. Nehmen wir an, ich klicke auf den Link "Kontakt". Ich würde nun #contactus am Ende der URL sehen. Wenn ich dann die Seite aktualisiere, sehe ich wieder den Inhalt meiner Homepage.
  2. Dasselbe Problem tritt auf, wenn ich versuche, jemanden auf meine Kontaktseite zu verlinken.

Ich habe mich gefragt, ob jQuery irgendwie herausfinden kann, was nach dem #-Zeichen in der Url kommt. In diesem Fall kann ich die letzte Zeile meines jQuery-Codes ändern, um das anstelle der Home-Daten die ganze Zeit zu laden.

3voto

David_001 Punkte 5433

window.location.hash enthält den Wert nach dem Hash (wenn es einen gibt). (Dies ist der Fall, wenn die aktuelle URL, z. B. die aktuelle Seite, in der Adressleiste des Browsers mit einer Raute versehen ist).

Andernfalls, wenn Sie einen Link aus einer href lesen, müssen Sie indexOf('#') und ein bisschen Parsing.

2voto

Justin Punkte 603

Vielen Dank für eure Antworten, Leute. So habe ich es jetzt gemacht:

$(document).ready(function() {

    var content_loader = $('#content-loader');

    $('#nav ul li a').click(function () {
        $(this).closest('ul').find('li.active').removeClass('active');
        $(this).parent().addClass('active');
        content_loader.load('content/' + $(this).attr('href').slice(1) + '.html');  
        });

    var initial = 'home';
    if (window.location.hash) {
        initial = window.location.hash.slice(1);
        }

    $('#nav').find('a[href="#' + initial + '"]').parent('li').addClass('active');
    content_loader.load('content/' + initial + '.html');

    });

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X