Estou preso utilizando uma plataforma (Nationbuilder) que adiciona automaticamente a tag base no header. Não foi até recentemente e agora as dezenas de páginas com links de âncora acabam enviando o usuário para a página inicial.
Eu preciso usar o jQuery para adicionar o URL da página atual antes do #anchor. O mais próximo que eu posso encontrar é o seguinte código, mas eu não tenho idéia de como modificá-lo tão somente links com um atributo href começando com um # são modificados:
$("a").attr("href", "http://www.example.com/pageslug")
Então eu gostaria de:
Para ser alterado para:
Você pode usar o atributo CSS começa com seletor:
Em vez de selecionar "a"
, selecione 'a[href^="#"]'
significa “tags com um atributo href iniciando com #
.
Então, algo como:
$('a[href^="#"]').each(function(i,el){ el.href = "http://www.example.com/pageslug" + el.hash; });
(violino)
Uma adição ao que Benjamin disse, você precisará capturar o href atual para cada uma das âncoras, o que significa que você precisa de um loop. assim
$('a[href^="#"]').each(function(index, element){ var $ele = $(element), oldHref = $ele.attr('href'); $ele.attr('href', '//example.com/page'+ oldHref); });
Algo assim?
$('a').attr('href', window.location.pathname + this.attr('href'))