我有一个函数将 jQuery UI DatePicker(使用我的选项)附加到传递的 jQuery 对象:
function bindDatepicker($obj)
{
if ($obj == null) $obj = $("input.date");
$obj.datepicker(
{
appendText: '(yyyy-mm-dd)',
autoSize: true,
changeMonth: true,
changeYear: true,
closeText: 'Done',
dateFormat: 'yy-mm-dd',
defaultDate: '+1m',
minDate: +1,
numberOfMonths: 2
}
);
}
我在每个页面的开头调用它以将其绑定(bind)到输入元素:
$(function() {
bindDatepicker($("input.date"));
});
这很好用。当我使用 $.load() 加载表单元素时,我的问题就来了。我无法将 DatePicker 附加到任何加载的元素。例如:
$("#id").load("urlToLoad", function() {
bindDatepicker($("input.date"));
});
将表单元素加载到 div 中就好了,但不会附加 DatePicker。
这是为什么?我很难过。 :(
谢谢, 汤姆
最佳答案
您需要使用 jQuery .live()方法。它将“监听”任何符合您的选择器标准的新元素。
编辑:所以我原来的回答是错误的。 .live() 方法仅用于绑定(bind)事件。正如您在评论中指出的那样,如果没有要绑定(bind)的事件,您实际上无法绑定(bind)到事件。所以我决定制作一个样本,看看我是否可以重现你的问题,我可以。更奇怪的是,如果我尝试使用基于属性的选择器而不是类选择器,它会完美地工作。
所以而不是做
$('input.date').datepicker();
我在那里添加了一个名为“类型”的新属性,并具有以下选择器:
$('[type=date]').datepicker();
一切正常。
我不知道这是为什么,但我只能假设这是 jQuery 的错误。
关于javascript - 在 $.load 之后绑定(bind) jQuery UI 插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2752286/