我想检测哈希变化,如果哈希为空,请防止其滚动到屏幕顶部。

这是我所拥有的:

// 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;
             }
        });
     })

10-06 00:45