在我的情况下,n-child没有工作

时间:2014-08-14 13:31:39

标签: javascript jquery

<dd>
    <br>
    <br>
</dd>

如何移除上方<br>?我试过了

$('dd:nth-child(1)', 'dd:nth-child(2)').remove();

你可以看到,仍然存在: http://jsfiddle.net/h12qo3oe/2/

7 个答案:

答案 0 :(得分:2)

您目前使用jQuery选择器执行的操作实际上是specifying a namespace/context,用于选择元素。   $('selector', 'place-to-look')

您告诉jQuery要查找selector作为上下文元素place-to-look的子项,在这种情况下,您正在寻找位于另一个<dd>下的<dd> {1}}这是外部列表中的第二个。

......哪个不存在! (哦不!)

我相信其他人会给你“语法错误”的答案,但我想你可能想知道你在做什么而不是选择同样的引号如下:$('dd:nth-child(1), dd:nth-child(2)')

答案 1 :(得分:1)

jQuery接受second argument作为上下文,因此在您的语句中dd:nth-child(2)被视为上下文,并且在该上下文中搜索dd:nth-child(1)

如果您尝试删除br。为此你可以使用这个

$('dd').find('br').remove();

答案 2 :(得分:0)

你也可以这样做: DEMO

$('dd').children('br').remove();

答案 3 :(得分:0)

如果你想同时删除br,这将在这里工作

$('dd br:nth-child(1), dd br:nth-child(2)').remove();

您的代码中存在两个问题。

1)您在$中将两个选择器作为两个参数。因此,将它们包装在引号''中会生成一个参数。

2) $('dd:nth-child(1)'会先选择dd,因此您应该说$('dd br:nth-child(1)'

DEMO

答案 4 :(得分:0)

只是扩大人们的意见:

您的查询无效的原因是因为jQuery's multiple selector只接受一个参数。这是一个简单的修复,只需更改

$('dd:nth-child(1)', 'dd:nth-child(2)').remove();

$('dd:nth-child(1), dd:nth-child(2)').remove();

答案 5 :(得分:0)

首先,我建议您使用正确的jQuery多元素选择器:

$("element1, element2")

在你的情况下,你只需要思考第四个孩子&#34;作为数组中的选择器(arr [x])。 在您的代码中,您只需在文档中选择第二个dd元素。仅删除第一个&#34; br&#34;标签我将继续如下:

$("dd br:nth-child(1)").remove();

或者,更好的是,遵循关于导航DOM的最新jQuery建议:

$("dd").find("br").get(0).remove();

希望它有所帮助!

答案 6 :(得分:0)

您正在尝试删除br; dd的第一个和第二个孩子。您希望psuedo选择器:nth-child适用于br而不是dd; br是孩子们。

其次,正如@Morklympious清楚解释的那样,$('sel', 'context')中的第二个论点是你搜索的背景:

$('dd > br').filter(':nth-child(1),:nth-child(2)').remove(); //removes first two children br of dd

$('dd > br:lt(2)').remove(); //same

$('dd > br').remove(); // removes all br children of dd