"Open"回调执行太快

"Open" callback executing too fast

我正在使用 MagnificPopup 弹出一个表单。该表单具有日期选择器字段。但是,在我主页的日期字段上调用日期选择器的代码不适用于外部弹出表单中的日期字段,因为它不在页面加载时的 DOM 中:

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

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

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

但是,在弹出窗口完全打开之前,"open" 回调似乎 运行 太快了。日期选择器功能不适用于字段。但是,当我使用调试器遍历代码时,它会减慢速度,使日期选择器代码能够实际应用。同样,如果我向回调函数添加警报,日期选择器代码将正常运行。

我可以通过使用 setTimeOut 添加一个小的延迟来解决这个问题:

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

但这感觉很老套。有什么直接的方法可以做到这一点? (我在 MagnificPopup docs 中没有看到 "afterOpen" 回调)

ajaxContentAdded http://dimsemenov.com/plugins/magnific-popup/documentation.html#ajax-type