感谢您的回顾,所有真诚有用的答案都被投票赞成。 我有一些日期输入字段,当页面加载时,存在一堆动态生成的字段。每次生成新实例时,我都不会在该类上调用.datepicker(),而是使用.live,但它似乎不起作用。知道为什么吗?
$("input[name=myfav]").live("click", function(){
$(this).datepicker({
/* some options here */
});
});
我应该提一下,例如,自动完成功能完全正常。
$("input[name=mytwo]").live("click", function(){
$(this).autocomplete("somefile.php");
});
答案 0 :(得分:26)
这是一篇关于在jQuery中使用.live-event的datepicker的文章:
http://www.vancelucas.com/blog/jquery-ui-datepicker-with-ajax-and-livequery/
问题是默认情况下,Datepicker通过绑定到focus()事件来工作,但是从jQuery 1.3.2开始,'live'事件函数无法监视'focus'事件。
以下是网站::
的解决方法<script type="text/javascript">
$(function(){
$('input.calendarSelectDate').live('click', function() {
$(this).datepicker({showOn:'focus'}).focus();
});
});
</script>
编辑:不再需要此解决方法,因为jQuery 1.4.1+现在支持live()的焦点和模糊事件。 (谢谢@Chris S)
答案 1 :(得分:7)
这是我最终使用的。它利用了较新的jQuery中的live
和focus
$.datepicker.setDefaults({ dateFormat: 'yy-mm-dd', ... });
$('input.date').live('focus', function() {
$(this).datepicker().datepicker('show');
true;
});
答案 2 :(得分:4)
值得注意的是,jQuery 1.4.1+现在支持live()的焦点和模糊事件,因此不再需要变通方法,而不需要 - orignal poster的版本工作正常!
答案 3 :(得分:0)
更新:从jQuery 1.7开始,不推荐使用.live()方法。 1.7,使用.on()附加事件处理程序。参考:http://api.jquery.com/live/