Javascript .on(';单击';)函数在更新到jQuery 3.3.1后不工作

Javascript .on(';单击';)函数在更新到jQuery 3.3.1后不工作,javascript,jquery,Javascript,Jquery,首先,如果这里已经回答了这个问题,我很抱歉,但是我看到的解决方案都不适合我。 我正在更新一个旧网站,在将jQuery更新到3.3.1版之后,我的功能停止了工作,我无法对这个问题保持清醒的头脑 这是我的剧本: (function(){ $("a").on('click', function(e) { if (this.hash !== "") { e.preventDefault(); var hash = this.hash

首先,如果这里已经回答了这个问题,我很抱歉,但是我看到的解决方案都不适合我。 我正在更新一个旧网站,在将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()函数的初始声明。

如果您的JavaScript代码在DOM就绪之前执行,或者在JavaScript执行时没有锚定标记

尝试以下代码,我希望这将为您工作

$('body').on('click','a',function(e){
//IMPLEMENT YOUR LOGIC HERE
}); 

注意:-如果JavaScript代码在DOM就绪之前执行,或者JavaScript执行时没有锚标记,请确保JQuery库文件包含在JavaScript代码之前

尝试以下代码,我希望这将为您工作

$('body').on('click','a',function(e){
//IMPLEMENT YOUR LOGIC HERE
}); 

注意:-确保JQuery库文件包含在JavaScript代码之前

永远不会调用包装函数

(function(){
   //code here
});
应该是

(function(){
   //code here
})();
也许你的意思是:

$(function(){
   //code here
});

这是一个jQuery简写,用于在DOM就绪时调用函数

您的包装函数永远不会被调用

(function(){
   //code here
});
应该是

(function(){
   //code here
})();
也许你的意思是:

$(function(){
   //code here
});

哪一个是jQuery的缩写,用于在DOM就绪时调用函数

您是否检查了开发人员工具以查看是否有任何错误?您是否尝试过添加一个非常简单的事件,如
$('body')。on('click',function(e){alert('Here!');})
查看问题是否真的存在于
.on
?“无法识别.on('click')函数本身”-因此根本不调用处理程序?然后可以做的第一件事是删除处理程序中所有不必要的代码。只关注处理程序本身。还提供了一个更完整的示例来说明问题。浏览器的开发人员控制台中是否有错误?是否调用过添加处理程序的语句?
“a”
选择器是否与当时的任何元素匹配?除了“它不起作用”之外,我们还需要更多的信息。上的
监听器在版本
3.3.1
中按预期工作。您的链接是否包含哈希?@Scoots ok我犯了一个新手错误
(function(){$('document')。on('click',function(){console.log(“哎哟!”;});})我检查的是文件,而不是正文。它确实可以识别.on()函数。您是否检查过开发人员工具以查看是否有任何错误?您是否尝试过添加一个非常简单的事件,如
$('body')。on('click',function(e){alert('Here!');})
查看问题是否真的存在于
.on
?“无法识别.on('click')函数本身”-因此根本不调用处理程序?然后可以做的第一件事是删除处理程序中所有不必要的代码。只关注处理程序本身。还提供了一个更完整的示例来说明问题。浏览器的开发人员控制台中是否有错误?是否调用过添加处理程序的语句?
“a”
选择器是否与当时的任何元素匹配?除了“它不起作用”之外,我们还需要更多的信息。
上的
监听器在版本
3.3.1
中按预期工作。您的链接是否包含哈希?@Scoots ok我犯了一个新手错误
(function(){$('document')。on('click',function(){console.log(“哎哟!”;});})我检查的是文件,而不是正文。它确实识别了.on()函数。谢谢你的输入,我已经在你的答案下面贴出了解决问题的方法。谢谢你的输入,我已经在你的答案下面贴出了解决问题的方法。这确实解决了问题,我应该调用脚本文件上的所有包装函数吗?所有其他函数在没有被调用的情况下都能很好地工作。这是没有意义的-所有
(function(){})
所做的就是声明一个表达式,该表达式没有分配给任何对象,因此在任何情况下都无法访问或使用。@Aereth:“所有其他函数在没有被调用的情况下都能很好地工作”-只有在“工作良好”的意思是“不做任何事情”的情况下。需要调用函数才能执行。听起来你在代码中的某个地方做了一些错误的假设,但你没有向我们展示。@JonasH不,对不起,我没有正确思考,我确实忘记调用函数了。你是对的,我宝贵的评论是错误的。谢谢大家的帮助。这确实解决了问题,我应该调用脚本文件上的所有包装函数吗?所有其他函数在没有被调用的情况下都能很好地工作。这是没有意义的-所有
(function(){})
所做的就是声明一个表达式,该表达式没有分配给任何对象,因此在任何情况下都无法访问或使用。@Aereth:“所有其他函数在没有被调用的情况下都能很好地工作”-只有在“工作良好”的意思是“不做任何事情”的情况下。需要调用函数才能执行。听起来你在代码中的某个地方做了一些错误的假设,但你没有向我们展示。@JonasH不,对不起,我没有正确思考,我确实忘记调用函数了。你是对的,我宝贵的评论是错误的。谢谢大家的帮助。