在这种情况下,我失去了 jquery datepicker 功能......
1-最初我有一个正常的视图,工作正常,有这个代码用于日期输入......
<input type="text" name="date_start" id="date_start"
value="@(Model.TimeStart)" />
<script language="javascript" type="text/javascript">
$("#date_start").datepicker();
</script>
2-然后,我将该视图转换为动态加载的局部视图...
$('#TargetEmptyDiv').load("/MyController/MyAction");
3-部分视图加载正常,可以(手动)输入数据并且一切正常。唯一的问题是 jquery datepicker 不再工作。我尝试在加载后分配它,使用这个......
$('#TargetEmptyDiv').load("/MyController/MyAction",
function () { $("#date_start").datepicker(); });
那没有用。
4- 后来我了解到 jquery 提供了 live() 和 delegate() 函数,它们能够将 javascript 代码附加到“现在和将来”加载的元素。所以,我在文档初始化中尝试了这个......
<script type="text/javascript">
$(document).ready(function () {
$("#date_start").live("click", function () { $(this).datepicker(); });
});
</script>
后来也...
<script type="text/javascript">
$(document).ready(function () {
$("#date_start").delegate("click", function () { $(this).datepicker(); });
});
</script>
这些都不起作用,可能是因为它们直接引用了“click”事件,但是 datepicker 是“附加”(如果这是正确的术语)到整个元素的。
所以,问题是:如何让 jquery datepicker 在动态加载后加载的元素上工作???
谢谢你的时间!
已解决:问题是在 _Layout.cshtml 的底部有这一行......
@Scripts.Render("~/bundles/jquery")
..它加载了jquery库的缩小版本(我已经引用了)。因此,库被加载了两次并且无效,产生错误“datepicker() 不是函数”。
只需评论或删除该行,一切正常!