$.ajax({}) と外部の php スクリプトを使用して、データを更新および処理するための Javascript オブジェクトを作成しました。オブジェクトが呼び出されたときにオブジェクトから返されるテーブル要素には、(display:none に設定されたクラス「hidden」を使用して) いくつかの非表示の tr が含まれています。
オブジェクト内の表示関数は次のとおりです。
this.displayData = function(location_div) {
var location_div = location_div;
$.ajax({
url:"display_data.php",
type: "POST",
success:function(response){
$(location_div).html(response);
},
error:function(response){alert("Error Displaying Problems." + response)},
});
};
以下が表示されます。
<div id="location_div">
<table>
<tbody>
<tr class="hidden"></tr>
<tr class="hidden"></tr>
<tr class="hidden"></tr>
<tr class="hidden"></tr>
</tbody>
<table>
</div>
(注: 「#location_div」は「displayData(location_div)」に渡される要素です)
私が抱えている問題は、JQuery が返されたデータにアクセスしようとするときです。すべての tr を検索し、それぞれを配列にプッシュしてから、それぞれを 1 つずつフェードする関数があります。
var elements_array = new Array();
$("#location_div table tbody").children().each(function() {
elements_array.push(this);
});
//function for fading in each element in the array
fadeAllIn(elements_array);
私が理解しているように、Ajax で読み込まれた要素は DOM の一部ではないため、$(element).on(); などの JQuery 関数を使用する必要があります。または $(element).live(); しかし、私が試したことは何もありませんでした。テーブルはロードされていますが、テーブルが Ajax でロードされているため、JQuery は .each() を使用して各 tr を選択できないようです。
これに対する解決策/回避策を知っている人はいますか? JQuery を使用してテーブル内の各 tr をフェードインするよりも良い解決策はありますか?