Javascript .on(';单击';)函数在更新到jQuery 3.3.1后不工作
首先,如果这里已经回答了这个问题,我很抱歉,但是我看到的解决方案都不适合我。 我正在更新一个旧网站,在将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
(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不,对不起,我没有正确思考,我确实忘记调用函数了。你是对的,我宝贵的评论是错误的。谢谢大家的帮助。