jQuery无法选中第三个子元素,如何隐藏指定Gift Aid相关段落?
问题原因
你当前的代码存在两个核心问题:
- 语法错误:
nth-child选择器缺少闭合右括号 - 选择器逻辑错误:
nth-child是统计父元素下所有类型子元素的排序,而非仅统计<p>标签的排序,且你没有指定仅匹配外层div的直接子元素,无法定位到目标段落。
解决方法
以下三种方案都可以实现需求,可根据实际场景选择:
方案1:按同类型标签序号匹配(推荐结构固定的场景)
使用nth-of-type选择器,仅统计同级同标签的排序,同时加>限定仅匹配外层div的直接子<p>:
$( ".pmpro_checkout-fields h3" ).hide(); $( ".pmpro_checkout-fields > p:nth-of-type(3)" ).hide();
方案2:按内容精准匹配(推荐结构可能变动的场景)
用:contains选择器直接匹配包含指定文本的段落,不受元素排序变动影响:
$( ".pmpro_checkout-fields h3" ).hide(); $( ".pmpro_checkout-fields p:contains('Gift Aid legislation')" ).hide();
方案3:按相邻节点匹配
目标段落刚好在<h3>Gift Aid</h3>的后面,可以直接用next()关联选择,代码更简洁:
$( ".pmpro_checkout-fields h3" ).hide().next('p').hide();
内容的提问来源于stack exchange,提问作者Tom_evok
相关产品推荐
相关产品推荐

