2010-12-10 3 views
2
와 링크

나는 다음 링크로 이동한다고 가정 :프로세스 앵커 (해시) jQuery를와 Ajax

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

http://www.mysite.com/feature의 내용은 jQuery를 아약스와 함께로드됩니다, 그래서 나는 아약스 내용까지 #linktosection를 탐색 할 수 없습니다 로드되었습니다. 그것은 내가 탐색 할 필요가로드되면 #linktosection

에 (어쩌면 클릭을 시뮬레이션)이 내 jQuery를 아약스 호출입니다 :

$('.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

마지막으로, 나는 그것을 구현 내용로드 후 호출 될 때 :

window.location.hash = window.location.hash 
1

가로드가 :

$('.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

'success :'함수에 그 코드를 넣으십시오. 'window.location.hash' (해쉬 부분 다음에 오는 URL의 비트)를 취하고, 그 이름을'name' 속성으로 가지는 앵커를 찾고, 그 요소를 뷰로 스크롤합니다. –

+0

이것은 작동하지 않습니다. window.location.hash는 현재 URL에 앵커가 없으므로 빈을 반환합니다. 앵커는'$ (this) .attr ('href')'속성에 있으므로이 해결책은 나에게 유효하지 않습니다. –

+1

아, 알겠습니다. 왜 성공 함수에서'window.location.hash = $ ('a', data) .attr ('name'); –

2

은, 무슨 일이 나를 위해 작동, 다음과 같이

$('a[name=' + window.location.hash + ']').get(0).scrollIntoView(); 
관련 문제