如何隐藏每个.parent下除首个.push_down外的子元素?现有代码无效求解决
嘿,我来帮你搞定这个问题~你的代码里有几个语法小错误,比如$('.parent').[i]这种写法是不对的,而且反复查询DOM元素也有点浪费性能。下面给你几种简单靠谱的实现方式,选你顺手的用就行:
方法一:用jQuery遍历+切片(最直观)
这种方式逐个处理每个.parent元素,逻辑清晰,适合需要后续扩展其他操作的场景:
$(document).ready(function(){ // 遍历每一个.parent容器 $('.parent').each(function(){ // 找到当前容器下所有.push_down,从第2个开始全部隐藏 $(this).find('.push_down').slice(1).hide(); }); });
简单解释:
$(this)指代当前正在遍历的那个.parent元素,避免重复查询整个DOM.slice(1)会选中索引从1开始的元素(也就是第二个及以后的所有.push_down).hide()直接隐藏这些元素
方法二:纯CSS实现(性能最优)
如果页面加载后不会动态新增.push_down元素,直接用CSS就能搞定,不需要写JS,性能更好:
.parent .push_down:not(:first-child) { display: none; }
解释:not(:first-child)会精准选中每个.parent下不是第一个的.push_down元素,直接隐藏。
方法三:jQuery链式调用(一行代码搞定)
如果想用jQuery但不想写循环,直接用选择器选中目标元素就行:
$(document).ready(function(){ $('.parent .push_down:not(:first-child)').hide(); });
这个思路和CSS一样,直接选中所有需要隐藏的元素,一次性隐藏。
顺便说下你原代码的问题:
- 语法错误:
$('.parent').[i]这种写法不符合jQuery语法,应该用$('.parent').eq(i)来获取第i个.parent元素 - DOM查询重复:反复写
$('.parent').[i].$('.push_down')会多次查询DOM,建议先把当前.parent存成变量,再找里面的子元素 - 嵌套循环没必要:用jQuery的内置方法可以简化这些循环逻辑,不用自己写两层for循环
内容的提问来源于stack exchange,提问作者user9463040
相关产品推荐
相关产品推荐

