首先,很抱歉,如果在此已经回答了这个问题,但是我看到的所有解决方案都没有对我有用。 我正在更新一个旧网站,并且在将jQuery更新到3.3.1版之后,我的函数停止了工作,无法解决这个问题。
这是我的脚本:
(function(){
$("a").on('click', function(e) {
if (this.hash !== "") {
e.preventDefault();
var hash = this.hash;
$('html, body').animate({
scrollTop: $(hash).offset().top
}, 1500, function(){
window.location.hash = hash;
});
}
});
});
以及我加载脚本文件的顺序:
<script src="/js/jquery-3.3.1.min.js"></script>
<script src="/js/jquery.easing.min.js"></script>
<script src="/js/bootstrap.min.js"></script>
<script src="/js/scripts.js"></script>
页面跳转到立即建立的锚点。我是否忽略了某些功能弃用?在2.2.4下工作正常。
提前感谢您的建议!
编辑:删除了最初的声明,即未识别.on()函数。
答案 0 :(得分:3)
您的包装函数永远不会被调用
(function(){
//code here
});
应该是
(function(){
//code here
})();
也许你是说:
$(function(){
//code here
});
这是jQuery的简写形式,用于在DOM准备就绪时调用该函数
答案 1 :(得分:1)
如果您的JavaScript代码是在DOM准备就绪之前执行的,或者执行JavaScript时没有锚标记。
尝试以下代码,希望对您有用。
$('body').on('click','a',function(e){
//IMPLEMENT YOUR LOGIC HERE
});
注意:-确保您的JQuery库文件在JavaScript代码之前包含