jQuery$(文档).ready()触发两次

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (109)

所以我一直在网上搜索,试图找出这里发生了什么,我一直没有得到具体的答案。

我在我的网站上有一个$(document).ready,无论其内部的代码是多少次都可以运行。

我已经阅读了关于jQuery的bug报告,了解如果在语句中发生异常,.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&amp;c=29258&amp;s4='+s4+'&amp;s5=^');
}

</script>
</head>

不要关注JSP变量,但正如你所看到的,我只调用一次functions.js文件(这是.ready函数存在的地方)

提问于
用户回答回答于

准备好的事件不能发射两次。更可能发生的情况是,你的代码正在移动或操纵代码所包含的元素,导致浏览器重新执行脚本块。

这可以通过<head>在结束</body>标记中或之前包含脚本标记并且使用来避免$('body').wrapInner();。使用$('body').html($('body').html().replace(...));具有相同的效果。

用户回答回答于

这也发生在我身上,但我意识到,由于合并不好,脚本已经包含了两次。

扫码关注云+社区

领取腾讯云代金券

玩转腾讯云 有奖征文活动