私のasp.netプロジェクトにはパネルがあり、その上にjqueryタブのdivがあります。最初はパネルが非表示になっていて、ボタンをクリックすると表示されます。
これは非常に単純なコードです:
<div id="tabs">
<ul id="none">
<li><a href="#tabs-1">Asset details</a></li>
<li><a href="#tabs-2">Structure details</a></li>
<li><a href="#tabs-4">Audit Info</a></li>
</ul>
<div id="tabs-1">Some Content for tab 1</div>
<div id="tabs-2">Some Content for tab 2</div>
<div id="tabs-3">Some Content for tab 3</div>
</div>
そしてjqueryコード:
function myfunction() {
$("#tabs").tabs();
}
問題は、パネルを表示すると、タブ div が表示されますが、フォーマットされていないことです。
myfunction に遅延を設定すると、すべて正しく実行されます。
function myfunction() {
//$("#tabs").tabs();
setTimeout(function () {
$("#tabs").tabs();
}, 500);
}
この問題をより安全な方法で解決する方法はありますか?
ここに不足しているコード:
クリック時にパネルを表示するボタン:
<my:RoundedButton ID="BillingDataButton" runat="server"
SkinID="Small"
Text="Billing data"
OnClick="BillingDataButton_Click"
/>
コードビハインド:
protected void BillingDataButton_Click(object sender, EventArgs e)
{
BillingDataPanel.Show();
}
私はこれを試しました(マイケルに感謝します):
$(document).ready(function() {
$("#tabs").tabs();
});
しかし、ボタンをクリックしてパネルが表示されると、結果は次のようになります。
更新 - 可能な解決策
私のasp.netページにこのコードを追加しました:
<script type="text/javascript">
var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_endRequest(function (s, e) {
myfunction();
});
これにより、タブを表示するための jquery コードがリクエストの最後に実行されるようになります。この場合、setTimeout は要求されません。
より良い解決策があればお知らせください。