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初始化或将其包装在函数中并在需要的地方调用它。