"开"回调执行得太快

时间:2015-05-17 08:54:13

标签: jquery datepicker delay magnific-popup

我使用MagnificPopup弹出表单。表单有datepicker字段。但是,在我的主页面的日期字段上调用datepicker的代码不适用于外部弹出窗体中的日期字段,因为它不在页面加载的DOM中:

$(function(){
   $(".datepicker").datepicker();
}

为了避免这种情况,我添加了代码以在" open"中的日期字段上调用datepicker。回调MagnificPopup:

$('#myForm').magnificPopup({
    type: 'ajax',
    preloader: false,
    // add callback so we can apply datepicker to date fields
    callbacks:{
        open: function(){
            $(".datepicker").datepicker();  
        }   
    }
});

然而,"打开"在弹出窗口完全打开之前,回调似乎运行得太快了。 datepicker功能不适用于字段。但是,当我使用调试器遍历代码时,它会减慢它以使datepicker代码实际应用。同样,如果我向回调函数添加警报,则datepicker代码可以正常运行。

我可以通过使用setTimeOut添加一个小延迟来编写代码:

open: function(){
    window.setTimeout(function() {
       $(".datepicker").datepicker();
    }, 800);
}

但这感觉很糟糕。有没有直接的方法来实现这一目标? (我不会在MagnificPopup docs中看到" afterOpen"回调)

1 个答案:

答案 0 :(得分:2)