我想检测hashchanges,如果hash是空的,请阻止它滚动到屏幕顶部。
这就是我所拥有的:
// Older version of jQuery, so can't use .on()
jQuery(window).bind("hashchange", function (e) {
if (window.location.hash == "") e.preventdefault();
else alert(window.location.hash);
});
将它放入您的控制台,您可以看到它正确检测到哈希更改并发出警报(如果它们不仅仅是“#”),但是如果您更改它会将“#”附加到您的网址,它仍会滚动到顶部。
当您向网址添加空哈希“#”时,如何阻止屏幕显示在页面顶部?
答案 0 :(得分:2)
$(function() {
$('a').click(function(e) {
var lnkHref = $(this).attr('href');
if (lnkHref.substr(lnkHref.length - 1) == '#')
{
e.preventDefault();
// optional if you want to redirect still
var trimmedUrl = lnkHref.substr(0, lnkHref.length - 1);
document.location.href = trimmedUrl;
}
});
})