いくつかの結果に対して AJAX 呼び出しを行う最初のページ (program_finder.asp) があります。
$('#filtersForm').submit(function(){
$('#resultsPane').load('program_finder_backend.asp',$('#filtersForm').serializeArray());
return false;
これはうまくいきます。パラメータを送信すると、バックエンド ページで SQL が実行され、フロント エンドの resultsPane 領域に問題なくダンプされます。返される情報はテーブルです。
私がやりたいことは、返された情報のテーブルを列でソートできるようにすることです。私はこの機能が好きで、それを使いたいです:
http://www.kryogenix.org/code/browser/sorttable/
ソート可能なクラスを持つテーブルの場合、ユーザーは列の見出しをクリックしてコンテンツをソートできます。ユーザーフレンドリーだと思います。正常に動作するのは静的ページです。
私はそれをロードします
script src="sorttable.js"></script
最初のドキュメントの先頭に。
問題は、返されたテーブルのコンテンツが最初のページの読み込み時にDOMに存在しないため、sorttable.jsがそれらを見つけられないことだと確信しています。返されたテーブルの結果を最初のページに表示するには、どこかに .live() または .on() または .delegate() が必要だと確信していますが、その方法がわかりません。
私は次のようなものが欲しいと思います:
$('table.sortable').on('click', function(){
// but here I don't know how to call sorttable();
});
これが明確でない場合は、さらに情報を追加します。
編集:ソート可能なドキュメントに次のように記載されていることを追加する必要がありました。
ページ読み込み後に追加されたテーブルの並べ替え
実行時に新しいテーブルをページに追加したら (たとえば、Ajax リクエストを実行してコンテンツを取得するか、JavaScript で動的に作成することにより)、その参照を取得します (おそらく var newTableObject = document.getElementById を使用)。 (idOfTheTableIJustAdded) など)、次のようにします。
sorttable.makeSortable(newTableObject);
しかし、それは私を助けません。わかりません。
編集#2:読みやすくするためにこれをここに置きます。私は試した:
$('#filtersForm').submit(function(){
$('#resultsPane').load('program_finder_backend.asp', $('#filtersForm').serializeArray(), function() {
sorttable.makeSortable($("#resultsPane").find("table")[0]);
return false});
});
運の悪いドッグバートあたり。これは、最初のページから直接バックエンド ページに転送されます。
編集#3
参照されたフィドルから Adeneo のコードを追加します。
$('#filtersForm').submit(function(e){
e.preventDefault();
$('#resultsPane').load('program_finder_backend.asp', $('#filtersForm').serializeArray(), function() {
sorttable.makeSortable($(this).find("table").get(0));
});
});
これはうまくいくようです.私はそれを理解したことがなかったでしょう. Dogbertにも感謝します。