У меня есть функция onclick, что я хочу добавить привязку к значению href. Я не хочу изменять URL, потому что мне нужен сайт для тихого функционирования для людей без JavaScript / в целях SEO. таким образом, вот то, что я попытался использовать (среди других вещей):
jQuery('a[rel=ajax]').click(function () { jQuery(this).attr('href', '/#' + jQuery('a')); });
Ссылка orginal похожа на это:
http://www.mysite.com/PopularTags/
URL переписывает, должен быть похожим на это, так, чтобы Ajax работал:
http://www.mysite.com/#PopularTags
Я смог заставить некоторый URL работать путем устанавливания, ссылки называют значение к тому же как href, но это не работало на ссылки с подразделами:
http://www.mysite.com/Artist/BandName/
Так не действительно уверенный. Спасибо за справку.
Я бы посоветовал использовать регулярные выражения, например
$('a[rel=ajax]').click(function(){
$(this).attr('href', function(){
this.href = this.href.replace(/\/$/, "");
return(this.href.replace(/(.*\/)/, "$1#"));
});
});
Думаю, что-то вроде
jQuery(function(){
jQuery('a').each(function(){
jQuery(this).attr('href','/#'+jQuery(this).attr('href'));
});
});
сработает. Читается как: при загрузке страницы прокрутите все ваши ссылки и замените их атрибуты href на # {old href}.
Это зависит от того, как вы закодируете свои ссылки в 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, включая протокол, имя домена и т. Д., Что нам не нужно в этом примере.