ASP Repeater场景下,nochild无内容时移除fa-chevron-down图标方法
解决方案
核心思路
因为.content和.internal是ASP Repeater逐行生成的,二者属于同一组循环项,所以可以通过DOM层级关系,找到每组中.nochild对应的.content元素,再判断是否移除图标。
方法一:原生JavaScript实现
// 遍历所有.internal元素 document.querySelectorAll('.internal').forEach(internal => { // 定位当前组内的.nochild元素 const nochild = internal.querySelector('.nochild'); // 检查nochild是否没有子元素 if (nochild && nochild.childElementCount === 0) { // 找到对应组的.content元素(两种场景选其一) // 场景1:content是internal的前一个直接兄弟节点 const content = internal.previousElementSibling; // 场景2:二者被同一父容器包裹(比如Repeater生成的项容器) // const content = internal.closest('.repeater-item').querySelector('.content'); // 移除目标图标 const icon = content?.querySelector('.fa.fa-chevron-down'); if (icon) icon.remove(); } });
方法二:jQuery实现(适配ASP.NET项目常用场景)
$('.internal').each(function() { const $nochild = $(this).find('.nochild'); if ($nochild.children().length === 0) { // 找到对应组的.content元素(两种场景选其一) // 场景1:content是internal的前一个兄弟节点 const $content = $(this).prev('.content'); // 场景2:通过共同父容器定位 // const $content = $(this).closest('.repeater-item').find('.content'); // 移除目标图标 $content.find('.fa.fa-chevron-down').remove(); } });
注意事项
- 如果Repeater生成的结构中,
.content和.internal并非相邻兄弟,而是被统一的父容器包裹,要替换成closest查找父容器的逻辑,避免误操作其他组的元素。 - 脚本需在DOM加载完成后执行:原生JS可放在
DOMContentLoaded事件中,jQuery可放在$(document).ready()内或页面底部。
内容的提问来源于stack exchange,提问作者ER_27
相关产品推荐
相关产品推荐

