.on('click')函数在更新到jQuery 3.3.1后不起作用

时间:2018-11-07 12:43:43

标签: javascript jquery

首先,很抱歉,如果在此已经回答了这个问题,但是我看到的所有解决方案都没有对我有用。 我正在更新一个旧网站,并且在将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()函数。

2 个答案:

答案 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代码之前包含