Owlapollo
2019-04-24 15:00
$("p").remove(".test2>p:nth-child(1)")
我通过这个选择器选择 test2下的第一个p,怎么两个都被删了呢?我试了一下把1改成2,就能精确删除第二个子节点?
我猜是这样的
$("p").remove(".test2>p:nth-child(1)")
因为选择器在remove()的括号里面,所以,你的写法是没问题的,只是当nth-child(1)时,选到了第一个p,然后remove把它删除了,然后因为有两个p元素,原来的第二个p元素变成了第一个p元素,然后remove又把原来的第二个p,现在的第一个p也删除了……
我试了下发现当nth-child(1)时,再多p元素也会删光光
而当写为$('.test>p:nth-child(1)').remove()时,就能只删除一个;
可能牵扯到remove()的实现方式,具体什么原理我还没学习到那一步.
:nth-child(index) 中的索引index 是从1开始计数的, 与eq(index) 要区分开
remove的参数不是放在自己的小括号里的,放在$('')这个里面,选择到指定元素,进行移除销毁
选择p1
直接在第一个选择器里进行选择吧,例如 $('.test2 p:nth-child(1)').remove();
remove中的选择器有点迷,等高手分析愿意
jQuery基础(二)—DOM篇
114012 学习 · 590 问题
相似问题