jQuery无法选中全部div标签:如何清空所有div下的第二个p标签
解决jQuery仅作用于第一个div的问题
你遇到的问题是因为$('div').children()会把所有div的子元素合并成一个单一的jQuery集合,之后的eq(1)只是从这个大集合里选取了第二个元素(也就是第一个div下的第二个<p>),所以只有它被清空。要让所有div下的目标<p>都被处理,有几种简单的方案:
方案1:遍历每个div并处理内部元素
用each()方法逐个遍历每个div,在每个div的范围内找到第二个<p>并清空:
$('div').each(function() { // 这里的$(this)指向当前遍历到的div $(this).children('p').eq(1).empty(); });
方案2:用精准的CSS选择器直接定位目标元素
更简洁的方式是直接用nth-child(2)选择器,它会匹配每个div下的第二个子元素(正好是你的目标<p>):
$('div p:nth-child(2)').empty();
这个选择器会直接选中所有符合条件的<p>标签,一步完成清空操作。
为什么原来的代码不生效?
再帮你理清楚原代码的逻辑:
$('div').children()会把三个div下的所有9个<p>标签放到一个集合里eq(1)只会选取这个集合中的第二个元素(索引从0开始),也就是第一个div里的<p>Greetings</p>- 所以只有这一个元素被清空,其他div的目标元素完全没被触及
内容的提问来源于stack exchange,提问作者Caleb Taylor
相关产品推荐
相关产品推荐

