0

DOMオブジェクトを子として別のDOMオブジェクトに追加するアプリケーションを作成しています。この子は、子オブジェクトを持つことができます。以下に示すように、フォームの送信と検証を使用しています。問題は、AJAX応答を送信および受信するときに、新しいフォームをDOMに追加し、それが送信されると、initializeSubmit関数をバイパスして新しいページをロードすることです。

jQuery(document).ready(function($) {
    $('#wpbody-content form').each(initializeSubmit);
});

function initializeSubmit () {
    var $ = jQuery,
        $form = $(this),
        options = {
            submitHandler: function() {
                var postdata = {},
                    $inputs = $form.find('input, textarea'),
                    edit_fields = {};
                $inputs.each( function () {
                    // gather postdata
                });
                $.ajax( {
                    type : 'POST',
                    dataType : 'html',
                    url : ajaxurl,
                    cache : false,
                    data : postdata,
                    success : function ( response ) {
                            $container = $form.parent();
                            $container.after(response);
                            $newform = $(response).find('form');
                            $newform.each(initializeSubmit);
                    }
                });
            }
        }

    $form.validate(options);
};

また、success関数内でそれぞれの代わりにapplyを使用しようとしました。

initializeSubmit.apply($newform);

コンソールログには、$newformのjQuery配列内の適切なフォームが表示されます。どんな助けでも大歓迎です!

4

1 に答える 1

0

問題は、で挿入されたものとは$(response).find('form')異なる DOM 変換を作成することだと思います。response$container.after(response);

.find('form')が実際に挿入された DOM ノードに作用することを確認する必要があります。

試す:

success : function ( response ) {
    var $response = $(response);
    $form.parent().after($response);
    $response.find('form').each(initializeSubmit);
}
于 2012-12-02T23:08:13.230 に答える