Comment lier Datepicker de jQuery après actualisation Ajax?

J'ai un datepicker de jQuery qui fonctionne très bien pour moi, sauf quand je frais le contenu via ajax, je perds le contrôle datepicker. À partir de ce que je peux dire que je devrais être à l'aide de jQuery sur() pour lier à l'entrée, mais je n'arrive pas à trouver le bon événement pour la lier à.

Fonctionne la première fois, mais pas sur l'actualisation ultérieure:

$("[id^=startPicker]").datetimepicker({
        showOn: "button",
        buttonImage: "/img/calendar_icon.png",
        buttonImageOnly: true,
        dateFormat: 'mm/dd/yy',
        timeFormat: 'hh:mm tt',
        stepMinute: 1,
        onClose: function (dateText, inst) {

            var selectedDate = $(this).datepicker("getDate"); //Date object

            $.ajax({
                url: "/url",
                dataType: "json",
                method: 'post',
                data: {
                    value: selectedDate.toDateString() + ' ' + selectedDate.toTimeString()
                },
                beforeSend: function () {
                    $("#loading").fadeIn();
                },
                success: function (data, textStatus) {
                    $("#content").html(data);
                },
                complete: function () {
                    $("#loading").fadeOut();
                }
            });
        }
    });

Ne se lient pas la première fois ou sur l'actualisation ultérieure:

$('#content').on('ready', "[id^=startPicker]", function () {
        $(this).datetimepicker({
            showOn: "button",
            buttonImage: "/img/calendar_icon.png",
            buttonImageOnly: true,
            dateFormat: 'mm/dd/yy',
            timeFormat: 'hh:mm tt',
            stepMinute: 1,
            onClose: function (dateText, inst) {

                var selectedDate = $(this).datepicker("getDate"); //Date object

                $.ajax({
                    url: "/url",
                    dataType: "json",
                    method: 'post',
                    data: {
                        value: selectedDate.toDateString() + ' ' + selectedDate.toTimeString()
                    },
                    beforeSend: function () {
                        $("#loading").fadeIn();
                    },
                    success: function (data, textStatus) {
                        $("#content").html(data);
                    },
                    complete: function () {
                        $("#loading").fadeOut();
                    }
                });
            }
        });
    });
  • Vous ne pouvez pas déléguer ce plugin avec la .on() événement hors de la boîte. Vous aurez besoin de ré-instancier le plugin sur les éléments dans le .success() de rappel.
  • prêt événement est utilisé uniquement sur le document même, vous pouvez le lier à d'autres éléments. Mais l'aide .sur() syntaxe, ce ne sera pas déclenché après l'événement ready est fait, contrairement à l'utilisation de l'alias $().prêt()
InformationsquelleAutor richj | 2013-07-27