私はテーブルを持っています。各行はレコードです。jqueryを介して行(レコード)をクリックすると、その下に新しいTRを作成し、AJAXを介して新しいテーブル(上記のレコードに関連するデータの関連サブセット)を挿入します。これが最初にロードされてから、アニメーションでTRを展開します。
よさそうだ。
ロードされて展開されたので、このTRを簡単に切り替えて、AJAXを介してコンテンツを再ロードせずに折りたたんで展開できるようにします。
明白で最も単純なオプションは、トリガーのイベントハンドラーを変更し、それにTOGGLEイベントを与えることです。
機能的には、これは機能します。美的には、しかし、それは完全に混乱しています。
最初に.toggleして閉じると、新しいTRの内容は適切に折りたたまれますが、TRが完全に折りたたまれるまで親テーブルの残りの部分は続きません。その後、親テーブルはすぐに折りたたまれてギャップを埋めます。これは耳障りです。
次に、開くための次の.toggleで、子テーブルは親テーブルの外側でアニメーション化され、すぐにその幅を折りたたむ。また、非常に耳障りで、親に比べて非常に狭いテーブルが残っています。
トグルイベントからアニメーションを省略した場合、適切なトランジションがなくても、正常に機能します。これはおそらく、jQueryに関連するCSSに関連していると思いますか?この不安定な視覚的動作が発生しないようにするために、CSSに関して何を宣言する必要があるかについての指針はありますか?
編集:マットの要求ごとに、マークアップ/スクリプト:
<!-- tr of parent table -->
<tr>
<td><a href="" class="expandable-expanded">link</a></td>
<td></td>
<td></td>
</tr>
<!-- this is the tr I create via jQuery and then want to toggle via above link -->
<tr class="expandedContent">
<td colspan="3">
<div class="loadedContent" style="display: block;"><div>
... my nested table is here ...
</div></div>
</td>
</tr>
トグルに使用するjquery:
$("td a.expandable").click(function(){
//jquery here that does the initial creation of the TR and loading of the AJAX...
// after loading ajax, remove the event
$(this).unbind('click');
// and then attach the new toggle event
$(this).closest("tr").next("tr.expandedContent").toggle("slow");
return false;
});