JQuery переписать HREF - PullRequest
       5

JQuery переписать HREF

6 голосов
/ 15 апреля 2010

У меня есть функция onclick, в которую я хочу добавить привязку к значению href.Я не хочу менять URL-адреса, потому что мне нужно, чтобы сайт по-прежнему функционировал для людей без javascript / для целей SEO.так вот что я пробовал использовать (среди прочего):

jQuery('a[rel=ajax]').click(function () {
    jQuery(this).attr('href', '/#' + jQuery('a'));
});

Оригинальная ссылка выглядит следующим образом:

http://www.mysite.com/PopularTags/

Перезапись URL должна выглядеть так, чтобыAJAX будет работать:

http://www.mysite.com/#PopularTags

Мне удалось заставить некоторые URL работать, установив значение имени ссылки на то же, что и для href, но он не работал для ссылок с подразделами:

http://www.mysite.com/Artist/BandName/

Так что не совсем уверен.Спасибо за помощь.

Ответы [ 3 ]

5 голосов
/ 15 апреля 2010

Я бы предложил использовать регулярные выражения, такие как

$('a[rel=ajax]').click(function(){
  $(this).attr('href', function(){
    this.href = this.href.replace(/\/$/, "");
    return(this.href.replace(/(.*\/)/, "$1#"));
  });
});
4 голосов
/ 15 апреля 2010

Зависит от того, как вы кодируете свои ссылки в HTML. Если вы ссылаетесь на http://www.mysite.com/PopularTags/, используя это:

<a href="/PopularTags/">Popular Tags</a>

Вы можете просто использовать это:

$(function() {
 $('a[rel=ajax]').each(function() {
  var actualHref = $(this).attr('href');
  this.href = '/#' + actualHref.substring(1, actualHref.length - 1); // cuts off the first and last characters (‘/’)
 });
});

Это приведет к следующему HTML:

<a href="/#PopularTags">Popular Tags</a>

Обратите внимание, что мы можем установить this.href вместо $(this).attr('href'), но нам все еще нужно, чтобы последний получил фактический атрибут href. this.href всегда содержит полный URI, включая протокол, имя домена и т. Д., Чего мы не хотим в этом примере.

0 голосов
/ 15 апреля 2010

Я верю что-то вроде

jQuery(function(){
  jQuery('a').each(function(){
    jQuery(this).attr('href','/#'+jQuery(this).attr('href'));
  });
});

сделает работу. Читайте как: при загрузке страницы просматривайте все ваши ссылки и заменяйте их атрибуты href на # {old href}.

...