【发布时间】:2018-02-14 16:48:27
【问题描述】:
我有一个使用 asp.net 转发器创建的 jQuery UI 选项卡控件,并且正在尝试确保在页面加载时选择第一个选项卡,并在回发时保留选定的选项卡。
我已经完成了回发部分,但在获取第一个选项卡的名称时遇到了问题。我已将样式应用于选项卡。这就是我所拥有和尝试过的:
<div id="divCategories">
<asp:Repeater runat="server" ID="rptCategories">
<HeaderTemplate>
<ul class="bronze nav nav-tabs" role="tablist">
</HeaderTemplate>
<FooterTemplate>
</ul>
</FooterTemplate>
<ItemTemplate>
<li>
<a href='#<%# Eval("Abbrev")%>' data-toggle="tab" aria-controls='<%# Eval("Abbrev")%>'>
<p class="tab title"><%# Eval("CourseCategory")%></p>
</a>
</li>
</ItemTemplate>
</asp:Repeater>
</div>
<asp:HiddenField ID="hfSelCat" runat="server" />
<script type="text/javascript">
$(function () {
debugger
//$("#divCategories").tabs();
var tabName = $("[id*=hfSelCat]").val() != "" ? $("[id*=hfSelCat]").val() : 'AnOps';//$("#divCategories").tabs('option', 'active');
$('#divCategories a[href="#' + tabName + '"]').tab('show');
$("#divCategories a").click(function () {debugger
$("[id*=hfSelCat]").val($(this).attr("href").replace("#", ""));
});
});
</script>
如果我取消注释初始化选项卡的脚本中的第一行;我失去了标签样式;如果我将其注释掉,当我尝试访问 .tabs('option','active') 时会在下一行出现错误,因为 tab 尚未初始化。所以,我使用的是硬编码选项卡名称('AnOps');
因为选项卡名称是动态生成的,所以基本上我试图获取第一个选项卡的名称,无论它可能是什么。
更新(根据 Dee 的建议)
我修改了如下脚本;它确实将选定的选项卡设置为第一个选项卡,但没有应用任何样式。
<script type="text/javascript">
$(function () {
var $categories = $("#divCategories");
$categories.tabs({
active: 0
});
debugger
//$("#divCategories").tabs();
var tabName = $("[id*=hfSelCat]").val() != "" ? $("[id*=hfSelCat]").val() : 'AnOps';//$("#divCategories").tabs('option', 'active');
$('#divCategories a[href="#' + tabName + '"]').tab('show');
$("#divCategories a").click(function () {
$("[id*=hfSelCat]").val($(this).attr("href").replace("#", ""));
});
});
</script>
【问题讨论】: