我的一个页面上运行了 jQuery UI 的 datepicker 函数。把它剥离下来,它的工作原理是这样的:
<form>
<input type="text" name="date" id="date" />
</form>
<script type="text/javascript">
jQuery("#date").datepicker();
</script>
由于这部分有效,我知道正确包含 jQuery 和 jQuery UI 脚本等。
现在,我想从我的一个函数中激活日期选择器,如下所示:
<form>
<input type="text" name="date" id="date" />
</form>
<a href="JavaScript:test();">test</a>
<script type="text/javascript">
function test() {
alert(jQuery("#date")); // this works as expected
jQuery("#date").datepicker(); // this throws an error
}
</script>
但是当 datepicker 函数在我的函数中运行时,JavaScript 会抛出错误TypeError: 'undefined' is not a function (evalating 'jQuery("#date").datepicker()')。看起来 datepicker 函数在我的函数范围内不可用,即使 jQuery("#date") 对象可用。
有没有人对此有解释或解决方法?
更新:在 ragnarok56 发布了演示代码工作的 jsfiddle 之后,我回到我的页面更仔细地查看可能影响它的内容。这是一个更大的系统的一部分,管理员可以通过添加他们自己的页眉和页脚代码来定制它,事实证明,管理员已经在页脚中添加了他自己的链接到一个旧的 jQuery 脚本。我删除了它,我的代码按预期工作。我也用他的替换了我的 jQuery 包含,我的代码仍然有效,所以问题似乎不是 jQuery 的旧版本,而是两次包含 jQuery。这似乎很奇怪,这会阻止 jQuery 函数在函数内部而不是在函数外部工作,因此我将保持打开状态,以防有人可以提供对该行为的解释。