克隆元素后,Jquery UI Datepicker不起作用

时间:2012-10-01 06:59:34

标签: jquery user-interface datepicker clone

我遇到克隆元素的问题,克隆元素后jQuery UI DatePicker不起作用。链接到示例:http://jsfiddle.net/V25qA/1/

3 个答案:

答案 0 :(得分:2)

您无法(安全地)克隆jQuery小部件 - 它们具有可能无法复制的状态。

在克隆之前,您应该在旧元素上调用.datepicker('destroy'),然后再次在克隆的输入元素上调用.datepicker()以重新初始化它。

答案 1 :(得分:1)

在歌剧中似乎也适合我。

在这种情况下,如果您希望此click事件适用于新创建的元素,请尝试委派事件。

$('form').live('click', '.dpicker', function(){
     alert('clicked')
     $(this).datepicker().focus();  
});

另外,我建议您使用 .on()而不是.live(),因为.quive在jquery版本1.7之后已弃用

DEMO

答案 2 :(得分:1)

更改以下行

$('.dpicker').eq(0).clone().prependTo('#new');

$('.dpicker').eq(0).clone().removeClass("hasDatepicker").prependTo('#new');

然后它会起作用。

当此元素通过.datepicker();启用了datepicker时,Datepicker会将“hasdatepicker”类分配给元素。如果克隆此元素,还可以克隆它的属性。这就是为什么当你拨打.datepicker();时,datepicker插件什么都不做。如果删除此类,则datepicker将在新元素上按预期工作。