2012-09-13 28 views
1
<script type="text/javascript"> 
$(document).ready(function() { 
    var top = $('#rt_outer').offset().top - parseFloat($('#rt_outer').css('marginTop').replace(/auto/, 0)); 
    $(window).scroll(function (event) { 
    // what the y position of the scroll is 
    var y = $(this).scrollTop(); 

    // whether that's below the form 
    if (y >= top) { 
     // if so, ad the fixed class 
     $('#rt_outer').addClass('fixed'); 
    } else { 
     // otherwise remove it 
     $('#rt_outer').removeClass('fixed'); 
    } 
    }); 
}); 
</script> 

問題非常簡單。如果我使用標題重定向到頁面中的新位置(例如半路向下,則在使用頭文件處理php腳本(「somepage.php#halfway」)後,我跳轉到#halfway,此腳本處理的div容器獲勝。直到這個頁面在任一方向滾動「噸跳了下去使用jquery/offset漂浮div - 忽略href標籤

我知道有這個方案,我只是不知道是什麼

回答

0

根據John Koerner的回答,我能夠做一些研究並提出一個解決方案。您可以在http://www.colonelcoon.net?override=true/

看到它在行動這裏是我最後使用的代碼...

<script src="http://github.com/cowboy/jquery-hashchange/raw/v1.3/jquery.ba-hashchange.js"></script> 
<script type="text/javascript"> 
$(document).ready(function() { 

var top = $('#rt_outer').offset().top - parseFloat($('#rt_outer').css('marginTop').replace(/auto/, 0)); 

    function checkScroll() { 
    // what the y position of the scroll is 
    var y = $(this).scrollTop(); 

    // whether that's below the form 
    if (y >= top) { 
     // if so, ad the fixed class 
     $('#rt_outer').addClass('fixed'); 
    } else { 
     // otherwise remove it 
     $('#rt_outer').removeClass('fixed'); 
    } 
    } 

    $(window).hashchange(function (event) { 
     checkScroll(); 
    }); 

    $(window).scroll(function (event) { 
     checkScroll(); 
    }); 

    $(window).hashchange(); 
}); 
</script> 
0

您可以使用窗口的hashchange事件:

$(window).on("hashchange", function() { 
    console.log('hash changed'); 
});​ 

對於你的解決方案,你可以提取你的滾動代碼到一個函數,然後從滾動和hashchange處理程序調用函數。

+0

散列被裝上重定向,它不是在一個javascript調用中使用(我猜會做一個方法).. 看看這個,http://www.colonelcoon.net?override=true - 然後點擊中心的第二個博客/新聞面板中的評論鏈接。你會看到它在做什麼。 –

+0

我沒有意識到hashchange是一個插件。我能夠根據你的方向想出一個解決方案。謝謝一堆! –