0

ボタンがクリックされると、元のフォーム送信の代わりに ajax 呼び出しが行われるように、コメント システムをAJAX 化しました。Post Commentajaxによるコメント送信ボタンでページを更新するまではうまくいきます。投稿とコメントとボタンを含む div のみを更新するとします。その後、ajax はトリガーされず、元の送信方法が使用されます。

フォームを送信するためのJavaScriptは次のようになります

jQuery('document').ready(function($){
    var commentform=$('#commentform'); // find the comment form

    commentform.submit(function(){
//  $('#commentform').submit(function(){

$('#commentform')役に立たなかった変数の代わりに使用しようとしました。

新しい投稿をロ​​ードする ajax が成功した後、commentform 変数を再度割り当てようとしました。それも役に立ちませんでした。

ajax 経由で投稿をロードする JavaScript の一部

var $ = jQuery.noConflict();

$(document).ready(function() { 
    $(".mhomepage_item").bind("click", function(){ //bind a click event on a class with name = mhomepage_item

    $.ajax({
            type: "POST",
            url: mhomepage.ajax_url,
            data: { 
                action: "get_post", 
                type: $(this).attr('type'), 
                current_post_id: $('#post_container').attr('current_post_id')
                },
            success: function(response) {
                response_from_json = JSON.parse(response);

                $('#content_container').html(response_from_json['html']);
                commentform=$('#commentform');
     }
    });

    // }
});

bindボタンがajax経由でリロードされた後でも、フォーム送信ボタンを永続的にする方法を誰かが提案できますか?

4

2 に答える 2

4

イベント デリゲートを試してください:

$(document).on("submit","#commentform",function(){
    // action to perform after submit intent
});

委譲されたイベント ハンドラーを使用すると、イベント ハンドラーの再バインドなどを行うことなく、動的に作成された要素を簡単に処理できます。

また、関数を呼び出したときに使用可能なbodyまたは最も近いコンテナーにイベントをバインドして、 へのレベルがさらにバブルしないようにすることもできます。あなたの場合、これを試すこともできます:document

jQuery(document).ready(function($){
    $('#content_container').on("submit","#commentform",function(){
        // action to perform after submit intent
    });
});

ドキュメンテーション

于 2013-10-13T08:10:03.680 に答える
0

それに応じて:AJAX呼び出し後のリンクへのjQueryバインディングクリック

コールバックでクリック/送信イベントにボタンをバインドする必要がありsuccessます。

あなたがすることができます:

success: function(response) {
      response_from_json = JSON.parse(response);

      $('#content_container').html(response_from_json['html']);
      commentform=$('#commentform');

      $('#commentform').bind("submit", function() { ... } );
}
于 2013-10-13T08:09:24.820 に答える