2012-03-24 85 views
1

我想开发一个日期选择器。我正在准备JavaScript字符串中的整个日历,并将其附加到div元素。问题在于jQuery click事件的行为有所不同。如果我将整个代码写入$(document).ready()事件的.js文件中,并将该脚本文件添加到HTML文件的顶部,则点击事件无法正常工作(意思是说,如果我在3月份,如果我点击下一步,日历将导航到4月的下个月,但随后,无论何时点击它,我都会收到旧的月份)。jquery表现不同

如果我把整个脚本写在html文件的底部(body标签之后),它可以正常工作。

当我把代码放入jsFiddle。它也在那里工作。我认为他们在页面底部附加脚本代码。

如果代码位于$(document).ready()事件处理程序中,可能会出错?这里是the jsFiddle link

+0

当您在HTML顶部运行JS时,是否会收到任何JavaScript错误? – Jacob 2012-03-24 07:14:13

+0

编号它没有给出任何错误..它工作正常,第一次点击..然后其不正常工作.. – 2012-03-24 07:16:30

回答

0

我认为这在IE中发生。我能够重现它。浏览器显示为以“怪癖模式”运行。当它处于此模式时,ArrayindexOf功能未定义。此JavaScript错误会阻止日历选取器正常运作。离开怪癖模式解决了这个问题。

要解决此问题,您可以确保您为页面定义了正确的DOCTYPE或具有避免怪癖模式的元标记<meta http-equiv="X-UA-Compatible" content="IE=edge" />

我不确定为什么移动脚本会触发不同的模式。也许其他人知道这个答案。

+0

我在IE 9中运行..它给了我正确的索引。问题是,接下来,我得到ID为DP_MONTH的标签的月份名称,从monthArray中找到月份的索引,然后增加它。$('#DP_MONTH').text()在第一次点击时正确。在病房里,它总是给3月,虽然标签有另一个月份的名字,所以它显示四月只在每一次点击。我希望你明白了我的观点..... – 2012-03-24 08:52:59

+0

我不能再现这种情况。您可以发布您的HTML,以便我们可以看到,当这个问题开始发生时,包括您的脚本到底有多精彩? – Jacob 2012-03-24 18:58:14

+0

谢谢,我可以用另一种方式解决这个问题..但它的工作正常... – 2012-03-25 14:04:52