jquery
  • url
  • append
  • anchor
  • 2011-05-08 2 views 28 likes 
    28

    클릭 이벤트에서 해당 앵커 이름을 "#on"을 추가/제거하여 페이지를 다시로드하지 않고 현재 URL에 추가하거나 href = '# on http://www.example.com/page.html#on 그래서 난이 (가) 해당 URL 에서 온 사용자를 감지 얻을 수새로 고침없이 현재 URL에서 앵커 이름 추가/제거

    function On() 
    { 
        //append to current url the anchor "#on"     
    } 
    
    function Off() 
    { 
        //remove from the current url the anchor "#on"      
    } 
    
    $('.on').live('click', function() { 
        On(); 
        return false;  
    }); 
    
    
    $('.off').live('click', function() { 
        Off(); 
        return false;  
    }); 
    

    답변

    51

    당신은하지 않습니다() 켜기 기능 를 호출 '링크에서 내 페이지

    예를 뛰어 만들기 때문에 이를 위해 jQuery가 실제로 필요합니다. location.hash을 사용하여 앵커 이름을 가져 오거나 설정할 수 있습니다. 당신이 당신의 jQuery를 준비 기능에 넣을 경우이 특정 값으로 설정되어있는 경우, 당신은 어떤 행동을 수행 할 수 있습니다 해시를 제거 할 때, 후행 # 주소 표시 줄에 머물 수 있다는

    $(function(){ 
        // Remove the # from the hash, as different browsers may or may not include it 
        var hash = location.hash.replace('#',''); 
    
        if(hash != ''){ 
         // Show the hash if it's set 
         alert(hash); 
    
         // Clear the hash in the URL 
         location.hash = ''; 
        } 
    }); 
    

    참고. 당신은 앵커의 변화를 살에 응답하려는 경우 hashchange 이벤트에 콜백을 바인딩 할 수 있습니다 : 당신이 앵커를 클리어 할 때 상단에 페이지 점프를 방지하려면

    $(document).bind("hashchange", function(){ 
        // Anchor has changed. 
    }); 
    

    , 당신은 hashchange 바인딩 할 수 있습니다 이벤트를 사용하여 이전 스크롤 위치로 되돌아갑니다. 이 예제를 체크 아웃 : http://jsfiddle.net/yVf7V/

    var lastPos = 0; 
    
    $('#on').click(function(){ 
        location.hash = 'blah'; 
    }); 
    
    $('#off').click(function(){ 
        lastPos = $(window).scrollTop(); 
        location.hash = ''; 
    }); 
    
    $(window).bind('hashchange',function(event){ 
        var hash = location.hash.replace('#',''); 
        if(hash == '') $(window).scrollTop(lastPos); 
        alert(hash); 
    }); 
    
    +0

    감사의 친구를하려고 사용하는 경우, 그것은 내가 아무것도에에 location.hash를 설정하고자하는 부분을 제외하고, 지금은 잘 작동, 당신이 말했듯이 그것은 URL의 끝 부분에 #을 유지하고 그것은 내 페이지를 최상위로 만든다. 다소 화가 나지만 해결 방법을 찾기를 희망한다. 다시 감사합니다;) – Adrian

    +3

    나는 점프 문제에 대한 해결책을 추가했습니다. – DarthJDG

    +0

    당신은 남자입니다! 고마워;) – Adrian

    14

    당신이 JQuery와이 코드를

    $("a[href^=#]").on("click", function(e) { 
        e.preventDefault(); 
        history.pushState({}, "", this.href); 
    }); 
    
    +0

    위대한, 간단한 대답! 매력처럼 작동합니다! – MatthewLee

    +1

    히스토리 API에 대한 브라우저 지원 - http://caniuse.com/#search=pushstate (기본적으로 IE10 이상)에 유의하십시오. – pospi

     관련 문제

    • 관련 문제 없음^_^