Как ссылаться на знак фунта (#) в jQuery? - PullRequest
3 голосов
/ 01 июля 2010

Я пробовал новый способ настроить веб-сайт, используя jQuery для динамического получения контента при нажатии на ссылку.Вот код jQuery:

$(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');

});

Я делаю это таким образом, так как у меня на заднем плане моего сайта есть песня, которую я хочу играть все время, а не запускать заново каждый раз, когда ссылканажата.

Все это работает довольно хорошо, за исключением двух проблем, которые у меня есть.

  1. Допустим, я нажимаю ссылку связаться с нами.Я бы сейчас увидел #contactus в конце URL.Если я затем обновлю страницу, я снова увижу содержимое своей домашней страницы.
  2. Та же проблема, если я попытаюсь связать кого-то со своей страницей контактов.

Мне было интересно, может ли jQuery каким-то образомузнайте, что идет после знака # в URL.В этом случае я могу изменить последнюю строку моего кода jQuery, чтобы постоянно загружать его вместо домашних данных.

Ответы [ 2 ]

3 голосов
/ 01 июля 2010

window.location.hash будет содержать значение после хеша (если оно есть). (Это когда хеш в текущем URL, например текущей странице, в адресной строке браузера.) В противном случае, если вы читаете ссылку с href, вам нужно будет использовать indexOf('#') и немного разбирать.

2 голосов
/ 01 июля 2010

Спасибо за ваши ответы, ребята.Вот как я это сделал сейчас:

$(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');

    });
...