2010-09-07 41 views
0

我遇到了一些麻烦的jQuery UI的datepicker脚本,并希望有人在这里可能能够提供帮助。jQuery UI datepicker reinstantiation蓝色

我需要能够动态地创建需要datepicker插件的元素,然后销毁它们,然后重新创建它们。 (我为此大量使用jTemplates。)

不幸的是,datepicker只在第一次创建元素时出现,即使它被重新实例化。

例如,假设我已经插入以下HTML到DOM使用动态jTemplates:

<div id="dateWrapper"> 
    <input type="text" id="dateChooser" /> 
</div> 

我然后实例化的日期选择器:

$("#dateChooser").datepicker(); 

这就像一个魅力。

但是,如果我再取出从DOM元素dateWrapper ...

$("#dateWrapper").remove(); 

...然后使用jTemplates重新插入它第二次,完全和以前一样,第二个电话实例化日期选择器...

$("#dateChooser").datepicker(); 

...不再有效。

我已经尝试在从DOM中删除#dateWrapper之前调用datepicker的destroy方法,并且我甚至已经手动尝试删除当第一次实例化datepicker时被注入到DOM底部的#ui-datepicker-div。但是,这些都没有解决问题。

有没有人有任何其他想法?我讨厌不得不排除datepicker,因为它是一个很好的小日历,而且我已经在大量使用jQuery UI。但是,如果我找不到解决方法,这对我来说可能是一个破坏者。

(提前)感谢您的帮助。

特拉维斯

+0

它的工作原理不同的ID?例如'dateWrapper-2'。如果是这样的话,每个新元素都应该使用一些UUID生成器。 – 2010-09-07 04:46:14

+0

经过更多的实验后,看起来好像我误解了问题的原因......显然,当datepicker注入其html时,它将指定包装器的z-index为10000.我还使用z-index:10000来描述我的最高层(只是一种习惯) - 而且是相互冲突的。不久,我改变了我所有的自定义最高层z-index 9999 datepicker工作正常。因此,故事的寓意:如果您使用的是datepicker,请避免在页面上使用z-index:10000作为其他元素。 – Travis 2010-09-07 05:06:59

回答

2

我相信你必须使用datepicker('destroy') method去除datepicker,就像这样:

var date = $('#date'); 

date.datepicker(); 

$('#create').click(function(){ 
    date.datepicker(); 

    return false; 
}); 

$('#destroy').click(function(){ 
    date.datepicker("destroy"); 

    return false; 
}); 

参见:http://jsfiddle.net/ESX3P/如果你创建了一个元素