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

时间:2009-10-18 20:15:46

标签: javascript jquery syntax datepicker

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

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

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

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

4 个答案:

答案 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中的livefocus

$.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/