我一直在网上筛选,试图找出这里发生了什么,但我还没有得到一个具体的答案。
我在我的网站上有一个$(document).ready
,不管里面的代码是什么,它都会多次运行。
我已经阅读了有关jQuery的错误报告,其中介绍了如果语句中发生异常,.ready
事件将如何触发两次。然而,即使我有以下代码,它仍然会运行两次:
$(document).ready(function() {
try{
console.log('ready');
}
catch(e){
console.log(e);
}
});
在控制台中,我看到的是"ready“记录了两次。有没有可能另一个包含异常的.ready会导致问题?我的理解是所有的.ready标签都是相互独立的,但我似乎找不到这是在哪里发挥作用的?
以下是该站点的标题块:
<head>
<title>${path.title}</title>
<meta name="Description" content="${path.description}" />
<link href="${cssHost}${path.pathCss}" rel="stylesheet" type="text/css" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="media/js/fancybox/jquery.fancybox.pack.js" type="text/javascript" ><!-- --></script>
<script src="/media/es/jobsite/js/landing.js" type="text/javascript" ><!-- --></script>
<script src="/media/es/jobsite/js/functions.js" type="text/javascript"><!-- --> </script>
<script src="/media/es/jobsite/js/jobParsing.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="/media/es/jobsite/js/queryNormilization.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="${jsHost}/js/jquery/jquery.metadata.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="${jsHost}/js/jquery/jquery.form.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.7/jquery.validate.min.js" type="text/javascript" charset="utf-8"><!----></script>
<script src="${jsHost}/js/jquery.i18n.properties-min.js" type="text/javascript" charset="utf-8"><!----></script>
<script type="text/javascript" charset="utf-8">
function updateBannerLink() {
var s4 = location.hash.substring(1);
$("#banner").attr('href','http://INTELATRACKING.ORG/?a=12240&c=29258&s4='+s4+'&s5=^');
}
</script>
</head>
不要管JSP变量,但正如您所看到的,我只调用了functions.js文件一次(这是.ready函数所在的位置)
发布于 2014-02-20 19:21:43
这也发生在我身上,但我意识到由于糟糕的合并,脚本已经被包含了两次。
发布于 2012-05-24 04:33:32
在我使用KendoUI时发生了这种情况...调用弹出窗口将导致document.ready
事件多次触发。简单的解决方案是设置一个全局标志,使其只运行一次:
var pageInitialized = false;
$(function()
{
if(pageInitialized) return;
pageInitialized = true;
// Put your init logic here.
});
它有点像黑客,但它是有效的。
发布于 2015-02-27 07:33:13
确保没有包含两次JS文件。那是我的案子
https://stackoverflow.com/questions/10727002
复制相似问题