ASPX页面加载时服务端如何将指定div或ListItem对应标签设为选中状态
实现方案
完全可以实现,你可以根据实际需求选择前端JS实现或者后端服务器端实现两种方案:
方案1:前端JavaScript实现(无需修改后端代码)
你这个DOM结构是标签页组件的标准结构,对应实现代码如下:
// 原生JS实现 document.addEventListener('DOMContentLoaded', function() { // 先移除所有标签和内容面板的激活状态 document.querySelectorAll('#ulMainTabs li').forEach(li => li.classList.remove('active')); document.querySelectorAll('#mainTabs > div').forEach(tabPanel => tabPanel.classList.remove('active')); // 给目标标签和对应内容面板加激活类 document.getElementById('liReferralTab').classList.add('active'); document.getElementById('divReferralTab').classList.add('active'); }); // 如果用jQuery UI Tabs这类标准标签页组件,一行代码即可实现 $(function() { $("#mainTabs").tabs({ active: 1 }); // 标签索引从0开始计数,序号1对应第二个Referral标签 });
方案2:后端服务器端实现(适合需要根据后端逻辑动态控制默认选中项的场景)
因为你的li标签都加了runat="server"属性,直接在后端Page_Load事件中修改样式/状态即可:
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { // 移除其他标签的激活类 liRDCTab.Attributes["class"] = liRDCTab.Attributes["class"]?.Replace("active", "") ?? ""; liContactsTab.Attributes["class"] = liContactsTab.Attributes["class"]?.Replace("active", "") ?? ""; // 给目标标签加激活类 liReferralTab.Attributes["class"] += " active"; // 同时控制内容面板的显示隐藏 divRDCTab.Attributes["style"] = "display:none;"; divReferralTab.Attributes["style"] = "display:block;"; divContactsTab.Attributes["style"] = "display:none;"; } }
注意事项
- 上述代码中的
active是标签页常用的激活状态类名,你需要替换为自己项目中实际使用的激活类名 - 如果使用的是其他第三方标签页组件,参考组件官方文档的「初始激活项」配置即可,通用逻辑都是指定目标标签的索引或者ID来设置默认选中
内容的提问来源于stack exchange,提问作者stonypaul
相关产品推荐
相关产品推荐

