2017-03-31 10 views
1

jquery/ajaxを使用してページングを含むテーブルをロードする単一のPHPページがあります。ページ番号のページがクリックされると(最初のページを除く)、別のページにリダイレクトする行を取得できません。ページ設定の後にPHP/Ajax/jqueryアクションが動作しない

ここでは、表のHTMLの生成コードを簡略化しています。私は、ページングページが変更されるたびにhtmlが正しく生成されることを知っています。

テーブルデータをロードするの成功時に
<tr class="table-row" data-myredirect="http://example.com/page"> 
<td>blah blah</td> 
</tr> 

(ユーザーがクエリを実行した後に一度だけ実行します)、私は(簡体字)、以下を実行します。

success:function(result){ 
     //display table data (not shown) 
$(".table-row").click(function() { 
     //redirect 
     window.document.location = $(this).data("myredirect"); 
    }); 
} 

ユーザーがページネーションのリンクから別のページを選択し、次のコマンドが実行されます。

//executes code below when user click on pagination links 
    $("#results").on("click", ".pagination a", function (e){ 
     e.preventDefault(); 
     $(".loading-div").show(); //show loading element 
     var page = $(this).attr("data-page"); //get page number from link 
     $("#results").load("test.php",{"page":page, "myparam":searchItemOne}, function(){ //get content from PHP page 
      $(".loading-div").hide(); //once done, hide loading element 
      //fixes scrolling up bug 
      $('html, body').animate({ 
     scrollTop: $("#results").offset().top 
    }, 0); 
     }); 

    }); 

次回のページングページに移動した後でアクションが機能しなくなる原因は何ですか?私は要求に応じてより多くのコードを含めることができます。

+1

もう少し完全な(ただし最小限の)例を提供できますか?私は、これが重複していると疑います*:https://stackoverflow.com/questions/203198/event-binding-on-dynamically-created-elementsしかし、不完全なセグメントが投稿されていることは確かに分かりません。 – David

+0

あなたはPHPかJavaScriptコードだけを気にしますか? – heyitsmyusername

+0

問題がクライアント側である場合は、クライアント側のコードが適切なものであるように見えます。 – David

答えて

1

は、私は(あなたはAJAXを介して第二の時間をHTMLをロードした後に)あなたの.table-rowはjavascriptのコードの後に​​レンダリングされるので、リダイレクトコードが新しいtable-rowを知らないからだと思います。
は、それが新しいHTML
をリロードするので、あなたのphpファイルにリダイレクトコード

$(".table-row").click(function() { 
     //redirect 
     window.document.location = $(this).data("myredirect"); 
    }); 

を入れてみてください。

関連する問題