$(文件)。就绪(函数(){});在IE9上失败了

时间:2012-09-01 21:16:12

标签: jquery internet-explorer-9

我正在为多个php页面使用单个js文件。在每个php结束时,我创建一个javascript变量来识别它,如下所示:

<div>    
.
.
.
</div>

<script>
var idp = 1;
</script>

</body>
</html>

然后在我的js文件中我有:

$(document).ready(function() {
    .
    .
    .
    if (idp == 1) {
       FunctionWithTheCodeForPage1();
    }
    if (idp == 2) {
       FunctionWithTheCodeForPage2();
    }
});

它在Chrome和Firefox上工作正常但在IE9中有时它似乎没有获得idp变量的值,有时它不执行我在“if”语句之前的一些jquery代码,似乎问题是$(文件)。就绪();因为我已经设置了FunctionWithTheCodeForPage1();直接在第1页的php内部工作,但其余的代码在$(document).ready();没有。

这是我正在使用的libreries:

<script type='text/javascript' src="Scripts/Popcalendar.js"></script>
<script type='text/javascript' src='Scripts/jquery-latest.js'></script>
<script type='text/javascript' src='Scripts/jquery.lightbox_me.js'></script>
<script type='text/javascript' src='Scripts/MyJS.js'></script>

此问题不会一直发生,有时页面加载正确,有时会出现此错误,但主要是错误。 IE9是否存在兼容性问题?我错过了什么?感谢

3 个答案:

答案 0 :(得分:2)

由于你准备好了几个函数,只需将它们直接传递给jQuery,而不是绕过一些ID变量。

如果将函数传递给jQuery,它将在页面准备好后立即执行。通常这是使用匿名函数完成的,如下所示:

$(function() {   // or $(document).ready(function() {
  // ...
});

但您也可以传递您之前定义的现有函数。

$(FunctionWithTheCodeForPage1);

您还可以为实体定义唯一ID,并且只有一个功能:

$(function () {
  $("body#page1").each(function () {
    // page1 specific;
  });
  $("body#page2").each(function () {
    // page2 specific;
  });
});

这样您就不必在页面中添加任何额外脚本。

答案 1 :(得分:2)

我遇到了同样的问题,IE9没有调用$(document).ready(function() {...}

原来,IE9正在“Quirks”模式下工作。 (使用F12菜单查找更多信息)。

我只是将以下内容(html5 doctype)添加到页面顶部...

<!DOCTYPE html>

以下标题......

<meta http-equiv="X-UA-Compatible" content="IE=9" >

IE9开始播放得很好!希望这会有所帮助...

答案 2 :(得分:0)

做一件事。

使用php设置var idp值而不是硬编码。 IT部门将确保填充它。

注意:

您还可以使用php填充隐藏字段并获取其值。