克隆元素上的jquery datepicker

jim*_*mmy 3 jquery datepicker

我正在尝试将一个datepicker控件应用于克隆的输入字段.我正在做的是找到我要克隆的表格行,用克隆(false)克隆它,然后对每个输入使用类.date调用datepicker().代码如下:

$('.repeat').bind('click', function() {
    var parentEl = $(this).parents('.root');
    var lastRow = jQuery.makeArray($(parentEl).find('.last'));
    var newRow = $(lastRow).clone(false);
    $(lastRow).removeClass('last');
    $(newRow).addClass('last');
    newRow.find('input').each(function() {
        this.name = this.name.replace(/\[(\d+)\]/, function(str, p1) {
            return '[' + (parseInt(p1, 10) + 1) + ']';
        });
    }).end().insertAfter($(lastRow));

    newRow.find('.date').each(function() {  
        $(this).removeAttr('id');
        $('.date').datepicker({ dateFormat: 'dd-mm-yy', changeYear: true, yearRange: '1970:2010' });
    });
});
Run Code Online (Sandbox Code Playgroud)

现在,$(this).datepicker()和$('.date').datepicker()都无法将datepicker控件附加到input.date.除了datepicker位之外,上面的代码按预期工作.有人有什么想法吗?!

提前致谢!

Gab*_*oli 14

如果您首先添加行(在应用datepicker之前)并且还删除由datepicker添加的类,似乎可以工作.hasDatepicker.

$('.repeat').bind('click', function(){
        var parentEl = $(this).parents('.root');
        var lastRow = jQuery.makeArray($(parentEl).find('.last'));
        var newRow = $(lastRow).clone(false, false);
        $(lastRow).removeClass('last');
        $(newRow).addClass('last');
        $('.root').append(newRow); // added this

        newRow.find('.date').each(function() {
            $(this).removeAttr('id').removeClass('hasDatepicker'); // added the removeClass part.
            $('.date').datepicker({dateFormat: 'dd-mm-yy', changeYear: true, yearRange: '1970:2010'});
        });
});
Run Code Online (Sandbox Code Playgroud)

演示:http://jsfiddle.net/gaby/LCfC2/

  • 盖比,谢谢,你结识了我的一天!removeClass()位完成了这个技巧.从昨天开始,这让我很难过!谢谢您的帮助! (2认同)