jQueryを使用してTDタグのクリックイベントに基づいてDIVをトグル(高さの増減)しようとしています。私はjQueryが初めてであることに注意してください。
<td id="ProductionTargetDEtd" class="collapsibleTdRelease" width="100%" onclick="javascript:toggleHeader();">
<table width="100%">
// Some Html code here
</table>
</td></tr>
<tr><td>
<div id="ProductionTargetDEDiv" class="slidingDiv" style="">
// Some Html code here
</div>
</td>
JSP スクリプト タグで、以下のように高さ = 0 を指定して DIV を非表示にしています。
<script>
$(document).ready(function(){
$(this).find("div#ProductionTargetDEDiv").each(function() {$(this).css({ overflow: "hidden", height: "0px" })});
</script>
});
最後に、TD id="ProductionTargetDEtd" のクリック イベントで、javascript メソッドの toggleHeader() の下で呼び出しています。
function toggleHeader(){
$("td#ProductionTargetDEtd").removeAttr("onclick");
$("td#ProductionTargetDEtd").toggle(function(){
$("div#ProductionTargetDEDiv").animate({ height: 135}, 400);
},function(){
$("div#ProductionTargetDEDiv").animate({ height: 0 }, 400);
});
}
TD タグをクリックすると、DIV が下にスライドし、次にクリックすると上にスライドします。上記の方法は、1つの異常を除いて正常に機能しています:
1) 1 回目のクリックでは何も起こらず、2 回目のクリック以降は DIV がスムーズに上下にスライドします。
驚いたことに、インライン javascript 呼び出しを使用して Javascript メソッド toggleHeader() を呼び出さない場合
onclick="javascript:toggleHeader()"
代わりに、すべての jQuery コードを JSP のタグに配置すると、この最初のクリックの問題が解決されます。