我想检测哈希变化,如果哈希为空,请防止其滚动到屏幕顶部。
这是我所拥有的:
// 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);
});
将其放入控制台,您可以看到它可以正确检测到哈希更改并发出警报(如果它们不只是“#”),但是如果将其更改,则在URL后面附加“#”,它仍会滚动到顶部。
当您在网址中添加一个空的井号“#”时,如何防止屏幕转到页面顶部?
最佳答案
$(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;
}
});
})