如何为JSON响应动态生成的第一个li标签添加active类?
实现方案
完全可以通过调整现有代码实现需求,以下是两种常用的实现思路:
方法1:循环内判断首次渲染
新增一个标记变量判断是否是第一次循环,首次循环时给li加上active类即可,修改后的代码如下:
// 新增首次循环标记 let isFirst = true; for (var key in jsonData) { if (jsonData.hasOwnProperty(key)) { console.log(key + " -> " + jsonData[key].textName); // 动态拼接class属性,首次循环加active const liClass = isFirst ? 'role="presentation" class="active"' : 'role="presentation"'; $('#tabs').append(`<li ${liClass}><a data-toggle="tab" id="tab_${jsonData[key].textName}" href="#panel_${jsonData[key].textName}">${jsonData[key].textName}<span id="count_${jsonData[key].textName}" class="countLabel"></span></a></li>`); // 首次渲染后修改标记 isFirst = false; } }
方法2:所有元素生成后统一给第一个元素加类
如果不想修改循环内的拼接逻辑,也可以在所有li生成完成后,通过jQuery选择器直接给第一个li添加active类,代码更简洁:
// 原有循环逻辑不变 for (var key in jsonData) { if (jsonData.hasOwnProperty(key)) { console.log(key + " -> " + jsonData[key].textName); $('#tabs').append('<li role="presentation" ><a data-toggle="tab" id="tab_'+jsonData[key].textName+'" href="#panel_'+jsonData[key].textName+'">'+jsonData[key].textName+'<span id="count_'+jsonData[key].textName+'" class="countLabel"></span></a></li>'); } } // 新增代码:给第一个li加active类 $('#tabs li:first').addClass('active');
两种方法都可以实现需求,你可以根据自己的代码习惯选择。
内容的提问来源于stack exchange,提问作者user16776772
相关产品推荐
相关产品推荐

