Jquery 使用Live()将Datepicker应用于新创建的输入

Jquery 使用Live()将Datepicker应用于新创建的输入,jquery,datepicker,Jquery,Datepicker,我对jQuery日期选择器有问题。我的表单有一个“添加另一个”按钮,为用户提供一个额外的行,以便他们可以输入多个匹配项。我希望日期显示datepicker,并找到如何使用live()函数执行此操作 $(function() { $('#AddAnother').bind('click', function(event) { var tablerow = $('#CreateMatch tr:last').html();

我对jQuery日期选择器有问题。我的表单有一个“添加另一个”按钮,为用户提供一个额外的行,以便他们可以输入多个匹配项。我希望日期显示datepicker,并找到如何使用live()函数执行此操作

        $(function() {
        $('#AddAnother').bind('click', function(event) {
            var tablerow = $('#CreateMatch tr:last').html();
            $('#CreateMatch tr:last').after('<tr>' + tablerow + '</tr>');
        });

        $('input.Datetime').live('click', function() {
            $(this).datepicker({
                showOn: 'focus',
                changeMonth: true,
                changeYear: true,
                dateFormat: "dd-mm-yy"
            }).focus();
        });

    });
所以你知道它在加载的第一个文本框上工作,但是动态绑定似乎不工作,并将其应用到新的文本框上

live()功能只涉及事件处理。因此,设置日期选择器的代码只会在“单击”事件发生时发生。datepicker代码此时不会设置它使用的处理程序


您可以尝试让事件处理程序在元素上保留一个标志(使用jQuery的“data()”功能)。如果您看到一个没有标志的元素,那么单击处理程序可以设置日期选择器和标志,并触发对自身的另一次“单击”。但是,我没有尝试过。

这里的问题是,当应用
.datepicker()
时,它会向名为
hasDatepicker
的输入中添加一个类,如果它发现这个类,就不会再次绑定。如果您在要克隆的行上打开一个日期选择器,它会添加这个类……而将该类复制到未来的行会使它们没有日期选择器

要解决此问题,请在克隆行时删除该类,如下所示:

$('#AddAnother').bind('click', function(event) {
    $('#CreateMatch tr:last').clone().appendTo('#CreateMatch')
                             .find('input.Datetime')
                             .removeClass('hasDatepicker');
});

$('#AddAnother').bind('click', function(event) {
    $('#CreateMatch tr:last').clone().appendTo('#CreateMatch')
                             .find('input.Datetime')
                             .removeClass('hasDatepicker');
});