2010-07-01 4 views
2

저는 링크를 클릭 할 때 동적으로 컨텐츠를 얻기 위해 jQuery를 사용하여 웹 사이트를 설정하는 새로운 방법을 시도해 왔습니다. 나는 모든 시간을 플레이하지 않는 링크를 클릭 할 때마다 시작하려면 내 사이트의 배경에서 노래를 갖고 있기 때문에jQuery에서 파운드 기호 (#)를 참조하는 방법은 무엇입니까?

$(document).ready(function() { 

var content_loader = $('#content-loader'); 

$('#nav ul li a').click(function() { 
    $(this).closest('ul').find('li.active').removeClass('active'); 
    $(this).parent().addClass('active'); 
    content_loader.load('content/' + $(this).attr('data-name') + '.html'); 
    }); 

content_loader.load('content/home.html'); 

}); 

나는 이런 식으로 해왔 다음은 jQuery 코드입니다 .

내가하는 두 가지 문제를 제외하고 모든 것이 잘 작동합니다.

  1. Google에 문의하기 링크를 클릭하면 이제 URL 끝에 #contactus가 표시됩니다. 그런 다음 페이지를 새로 고치면 내 홈페이지 콘텐츠가 다시 표시됩니다.
  2. 다른 사람을 내 연락처 페이지에 연결하면 동일한 문제가 발생합니다.

jQuery가 URL의 # 기호 다음에 나오는 내용을 어떻게 든 찾을 수 있는지 궁금합니다. 이 경우 홈 데이터 대신 항상로드하도록 jQuery 코드의 마지막 줄을 변경할 수 있습니다.

+2

가능한 중복 : http://stackoverflow.com/questions/298503/how-can-you-check-for-a-hash-in-a-url-using -javascript – Marek

+1

마크 업에 잘못된 속성을 추가하고 있습니까? .. gud ..;)가 아닙니다. – Reigel

+0

Reigel에 동의합니다. 임의의 데이터를 요소에 저장하려는 경우 .data()를 대신 사용하십시오. – ZX12R

답변

2

window.location.hash에는 해시 값 (있는 경우)이 포함됩니다. 당신이 HREF에서 링크를 읽는 경우

그렇지 않으면, 당신은 indexOf('#')를 사용해야합니다 (현재 URL의 해시가있을 때이 브라우저의 주소 표시 줄에. 현재 페이지. 예입니다) 그리고 파싱의 비트.

2

답변 해 주셔서 감사합니다. 나는 지금 그것을 어떻게 이것은 :

$(document).ready(function() { 

    var content_loader = $('#content-loader'); 

    $('#nav ul li a').click(function() { 
     $(this).closest('ul').find('li.active').removeClass('active'); 
     $(this).parent().addClass('active'); 
     content_loader.load('content/' + $(this).attr('href').slice(1) + '.html'); 
     }); 

    var initial = 'home'; 
    if (window.location.hash) { 
     initial = window.location.hash.slice(1); 
     } 

    $('#nav').find('a[href="#' + initial + '"]').parent('li').addClass('active'); 
    content_loader.load('content/' + initial + '.html'); 

    });