2010-12-10 49 views
2
鏈接

假設我要定位到以下鏈接:過程錨(哈希)使用jQuery和Ajax

http://www.mysite.com/feature#linktosection 

http://www.mysite.com/feature的內容加載使用jQuery AJAX,所以我不能瀏覽到#linktosection直到Ajax內容已被加載。一旦它被載入我需要導航(也許模擬點擊)到#linktosection

這是我的jQuery Ajax調用:

$('.changecontext-button').click(function() 
{ 
    $.ajax({               
     type: "POST",             
     url: $(this).attr('href'), 
     success: function(data) { 
      diffSection.html(data); 
     }, 
     error: function(xhr, textStatus, errorThrown) { 
      diffSection.html(xhr.responseText); 
     } 
    }); 
}); 

你知道如何使用jQuery做到這一點?

一種替代可以是解析HREF鏈接,並將其分離成基本URL錨URL。成功之後,我可以使用jQuery選擇器來獲取錨點鏈接並模擬.click()。

有沒有其他更好的選擇,使用jQuery或JavaScript?

謝謝先進。

回答

3

最後,我實現它,如下所示:

$('.changecontext-button').click(function() 
{ 
    var targetUrl = $(this).attr('href'); 
    $.ajax({               
     type: "POST",             
     url: targetUrl, 
     success: function(data) { 
      diffSection.html(data); 
      var anchor = getAnchor(targetUrl); 
      if (anchor) 
      { 
       $(anchor).click(); 
      } 
     }, 
     error: function(xhr, textStatus, errorThrown) { 
       diffSection.html(xhr.responseText); 
     } 
    }); 
}); 

...

function getAnchor(url) 
{ 
    var index = url.lastIndexOf('#'); 
    if (index != -1) 
     return url.substring(index); 
} 
1

您的內容後加載:

$('a[name=' + window.location.hash + ']').get(0).scrollIntoView(); 
+1

把這段代碼放在你的'success:'函數中。它需要'window.location.hash'(哈希部分之後的URL中的位),然後找到具有「name」屬性的錨,並將該元素滾動到視圖中。 – 2010-12-10 15:27:07

+0

這不起作用。 window.location.hash返回空,因爲我當前的URL沒有錨點。該錨位於'$(this).attr('href')'屬性上,所以此解決方案對我無效。 – 2010-12-10 15:44:14

+1

啊,我明白了。那麼爲什麼不在你的成功函數中做'window.location.hash = $('a',data).attr('name');'? – 2010-12-10 15:49:05

2

這是什麼工作對我來說,當內容加載後調用時:

window.location.hash = window.location.hash