2014-01-10 86 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有衝突。 –