我有一个函数将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
}
);
}
我在每个页面的开头调用它来将它绑定到输入元素:
$(function() {
bindDatepicker($("input.date"));
});
这很好用。当我使用$ .load()加载表单元素时,我的问题就出现了。我无法将DatePicker附加到任何加载的元素。例如:
$("#id").load("urlToLoad", function() {
bindDatepicker($("input.date"));
});
将表单元素加载到div中就好了,但不会附加DatePicker。
这是为什么?我很难过。 :(
谢谢, 汤姆
答案 0 :(得分:2)
您需要使用jQuery .live()方法。它将“监听”符合您的选择标准的任何新元素。
编辑:所以我原来的回答是错误的。 .live()方法仅用于绑定事件。正如您在评论中指出的那样,如果没有要绑定的事件,您实际上无法绑定到事件。所以我决定掀起一个样本,看看我是否可以重现你的问题,我可以。更奇怪的是,如果我尝试使用基于属性的选择器而不是类选择器,它就能很好地工作。
所以不要做
$('input.date').datepicker();
我在那里添加了一个名为'type'的新属性,并有以下选择器:
$('[type=date]').datepicker();
一切正常。
我不知道为什么会这样,但我只能假设它是jQuery的错误。