2014-01-10 40 views
0

我确定这很简单,但我似乎无法让它工作。点击后替换链接后的锚文本

我想单击链接后替换锚链接。被替换的链接将来自data-href值。

这里的HTML

<header class="site-header"> 
    <nav class="nav-primary"> 
     <ul> 
      <li><a href="#services" class="home-nav" data-href="/services">Services</a></li> 
      <li><a href="#about" class="home-nav" data-href="/about">About</a></li> 
      <li><a href="#portfolio" class="home-nav" data-href="/portfolio">Portfolio</a></li> 
      <li><a href="#blog" class="home-nav" data-href="/blog">Blog</a></li> 
     </ul> 
    </nav> 
</header> 
<div class="site-inner"> 
    <div class="content-site-wrap"> 
     <section id="services">Lorem ipsum dolor sit amet</section> 
     <section id="about">Lorem ipsum dolor sit amet</section> 
     <section id="portfolio">Lorem ipsum dolor sit amet</section> 
     <section id="blog">Lorem ipsum dolor sit amet</section> 
    </div> 
</div> 

而且我在JS尝试:

$(document).on('click', '.nav-primary a', function(){ 
    $('a.home-nav').attr('href', data('href')); 
}); 

不知道它的问题,但我使用此页面上的jQuery的平滑滚动,从这样当一个链接导航被点击,它将滚动到页面上的锚点。如果点击了相同的链接,则会转到由data-href定义的链接。

简而言之,我只需要点击链接后替换链接#。也许一个简单的replace函数可能工作。

+0

<一个的onclick = “this.href = this.getAttribute( '数据的href');返回false;”/ > –

+0

@MagicLasso这改变了链接的'href',但是在初始点击时,它并没有跳转到锚点,随后的点击也没有进入'data-href'定义的链接。 –

+0

啊,所以你想要去'data-href'中存储的链接? –

回答

4

$(this).data('href')使用代替data('href')

$(document).on('click', '.nav-primary a', function(){ 
    $('a.home-nav').attr('href', $(this).data('href')); 
}); 
+0

谢谢,我没有去试过,我没有添加更多的信息到原来的问题不知道是否有与其他Java的冲突, m使用与否 –

0
try this 

$(document).on('click', '.nav-primary a', function(){ 
console.log($(this).attr('data-href')) 
$(this).attr('href', $(this).attr('data-href')); 
}); 

DEMO http://jsfiddle.net/CkaLx/

+0

谢谢,我没有去试过,我没有给原始问题增加一些信息,不确定是否与我使用的其他java有冲突。 –