datepicker不会在ajax div重新加载后启动

我在div中有一个jquery datepicker,它通过ajax更新。 我可以在整个页面重新加载后打开一次datepicker,但是在ajax只更新了包含datepicker输入的div后,我无法看到datepicker。 我试过一个解决方案,我为类似的问题而伤,没有运气。

我对jquery和ajax不太熟悉,所以也许有人可以立即看到问题。

我有一个包含ajax的jquery函数:

function example(){ $.ajax({ url: "page.php", cache: false, success: function(data){ $('#div').html(data); } }); } 

Ajax重新加载一个div,里面有一个datepicker输入,如下所示:

  

Datepicker以这种方式构造:

 $(function() { $("#datepicker").datepicker({dateFormat: "dd.mm.yy"}); $.datepicker.setDefaults( $.extend( {'dateFormat':'yy-mm-dd'}, $.datepicker.regional['fi'] ) ); }); 

我需要做什么,每次div通过ajax更新时都能看到datepicker? 一些建议的datepicker要在ajax成功刷新,我没有得到它这样工作,或者不知道如何!

一种方法是在ajax成功时重新运行.datepicker()初始化程序。

将datepicker代码更改为:

 function applyDatepicker(elem) { $(elem).datepicker({dateFormat: "dd.mm.yy"}); //... Your datepicker code } 

然后一旦准备好文件:

 $(document).ready(function(){ applyDatepicker('#datepicker'); }) 

一旦你的ajax成功回调:

 $.ajax({ //... other ajax params, success: function(){ //... success callback code applyDatepicker('#datepicker'); } }); 

另外,正如@adrenalin建议的那样,确定最佳实践的唯一方法是更多地了解您的代码。


建议将元素更改为具有class="datepicker"而不是id ,主要原因是页面中可能存在多个日期选择器,并且id始终是唯一的。 作为一个初学者,我建议最简单的方法是尝试将ID想象为元素的正确名词,而类将是它的共同名词或形容词!

日期选择器需要初始化,因为您使用AJAX加载的是完全新元素,并且在您首次初始化它时不存在。 原始事件都不再绑定到新元素。 在AJAX加载成功回调上执行此操作(这取决于您执行此操作的方式。

它实际上取决于代码的构造方式以说明最佳实践是什么,但如果只在一个地方加载内容,则重复datepicker初始化或将其包装在函数中并在需要的地方调用它。