2013-08-01 42 views
0

工作,我有一個鏈接,滾動到頂部錨與網址,而不要使用onclick事件

<a href="index.html?test=test#slides-1" id="re" class="ancLinks"></a> 
$("a.ancLinks").click(function(){ 
      elementClick = $("this").attr("href"); 
      $('html, body').animate({ 
      scrollTop: $(elementClick).offset().top 
      }, 1000); 
     }); 

,當我拿出URL(index.html的?=測試試驗)它的工作原理。但我需要絕對鏈接的網址。什麼是錯的

+6

變化'$( 「本」)''到$(本)' – user1477388

回答

3

我想你想:

DEMO

$("a.ancLinks").click(function (e){ 
      e.preventDefault(); 
      elementClick = this.hash; 
      $('html, body').animate({ 
      scrollTop: $(elementClick).offset().top 
      }, 1000); 
     }); 
+0

+1你更快:) –

+0

'this.hash'?不知道那個......謝謝! – ReSpawN

+0

是的,這就是我想要的:) – herrsaidy

0

您正試圖獲得其歸結爲」 index.html的元素的偏移位置測試=測試#slide- 1「,這不是一個元素,而是一個URI。

的元件偏移將被取回來自真實DOM元素,可能的靶標。你可以簡單地做這樣的事情做到這一點:

$('a.ancLinks').click(function(event) { 
    var $this = $(this), 
     href = $this.attr('href'), 
     target = $this.data('target') || (href.indexOf('#') !== -1 ? '#'+href.split('#').pop() : false); 

    if (!target) return true; 
    var $target = $(target); 

    if ($target.length == 0) return true; 
    event.preventDefault(); 
    var offset = $target.offset(); 

    $('html, body').animate({ 
     scrollTop: offset.top || 0 
    }); 
}); 

這工作既<a href="anyurl.html#your-html-ID"><a href="anypage.html" data-target="#your-html-ID">