Jquery .live可以使用但不能使用.datepicker

感谢您的回顾,所有真诚有用的答案都被投票赞成。 我有一些日期输入字段,当页面加载时,存在一堆动态生成的字段。 每次生成新实例时,我都不会在该类上调用.datepicker(),而是使用.live,但它似乎不起作用。 知道为什么吗?

$("input[name=myfav]").live("click", function(){ $(this).datepicker({ /* some options here */ }); }); 

我应该提一下,例如,自动完成function完全正常。

 $("input[name=mytwo]").live("click", function(){ $(this).autocomplete("somefile.php"); }); 

这是一篇关于使用jQuery中的.live-event的datepicker的文章:

http://www.vancelucas.com/blog/jquery-ui-datepicker-with-ajax-and-livequery/

问题是默认情况下,Datepicker通过绑定到focus()事件来工作,但是从jQuery 1.3.2开始,’live’事件函数无法监视’focus’事件。

以下是该网站的解决方法::

  

编辑:不再需要此解决方法,因为jQuery 1.4.1+现在支持live()的焦点和模糊事件。 (谢谢@Chris S )

这就是我最终使用的。 它利用了livefocus于更新的jQuery

 $.datepicker.setDefaults({ dateFormat: 'yy-mm-dd', ... }); $('input.date').live('focus', function() { $(this).datepicker().datepicker('show'); true; }); 

值得注意的是,jQuery 1.4.1+现在支持live()的焦点和模糊事件,因此不再需要变通方法,而不再需要 – orignal poster的版本工作正常!

更新:从jQuery 1.7开始,不推荐使用.live()方法。 1.7,使用.on()附加事件处理程序。 参考: http : //api.jquery.com/live/