2012-10-16 6 views
3

몇 달 전에 고객 용 사이트를 만들었으며 사용자가 탐색 링크를 클릭하면 새 콘텐츠가 슬라이드되어 표시되고 이전 콘텐츠는 숨겨집니다. 나는 또한 고객에게 웹 스토어를 만들었고 메인 사이트 이미지 갤러리에 대한 링크를 원했다. 그러나 사이트가 실제로 한 페이지 만 콘텐츠로 가득하고 새 콘텐츠가 자바 스크립트로 표시되기 때문에 http://yoursite.com/#gallery을 입력하면 실제로 첫 번째 페이지가로드됩니다.주소가 x이면 스크립트를 실행 하시겠습니까?

$(document).ready(function(){ 
    $(page).load(function(){ 
     $('#page1').slideUp(); 
     $('#page2').slideUp(); 
    }); 
}); 

과 같은 작업을 수행 할 수 있으며 입력 한 주소에 따라 원하는 콘텐츠를 표시 할 수 있습니까?

+0

내가, 내가 * *이 100 % 가능하며 실제로 매우 일반적으로 사용되는 기술이다 아는 방법을 잘 모르겠어요 동안. – Qix

+2

'window.location.hash'를 확인한 다음 그에 맞게 조정하십시오. HTML5에는'window.onhashchange' 이벤트가 있습니다. 그것은 올바른 길로 인도 할 것입니다. – elclanrs

답변

1
$(function(){ 
    if (document.location.hash == '#gallery') { 
     $('#gallery').show(); 
    } 
}); 
+0

흠, ** 다른 ** 페이지에서 새 콘텐츠를로드하지 않습니까? 내 콘텐츠가 같은 페이지에 있습니다. –

+0

@ChristianNikkanen - 그래, 나쁘다. (비추천)'load()'함수를 알아 차리고 더 가까이서 보지 않고 콘텐츠를로드하는 것으로 가정했다. 정말로 갤러리를 보여주지 않는 모든 페이지의 전체 갤러리를 포함하여 나에게 정말로 나쁜 생각처럼 보입니까? – adeneo

+0

그런 것 같지만 작동하지 않습니다. $ ('# gallery')와 함께 show ('# gallery');를 대체했지만 $ ('# container')로 바뀌 었습니다. –

0
$(function(){ 
    var activePage = window.location.hash; // Gets the active page via location hash 
    $('[id^="page"]').not(activePage).slideUp(); // Slides up all inactive pages 
    $(activePage).slideDown(); // Slides down the active page 
}); 
+0

명확한 것은, 포커스가있는 요소를 참조하는 네이티브'document.activeElement'가 있다는 것입니다. 변수에 똑같은 이름을 붙이면 문제가되지 않겠지 만 다른 이름을 지정하거나 적어도 낙타를 변경하여 혼동을 피하는 것이 좋습니다. – adeneo

+0

감사합니다. 댓글 및 코드가 업데이트되었습니다. – kayen

+0

데모를 해 주시겠습니까? 제대로 작동하지 않을 수 있습니까? :) –

관련 문제