jQuery选择器没有按照我期望的方式工作

时间:2012-01-20 18:29:25

标签: jquery jquery-selectors

考虑以下简单的HTML:

<div id="navcontainer">
        <a href="#"><img alt="" src="Img1.jpg" /></a>
        <a href="#"><img alt="" src="Img2.jpg" /></a>
        <a href="#"><img alt="" src="Img3.jpg" /></a>
        <a href="#"><img alt="" src="Img4.jpg" /></a>
        <a href="#"><img alt="" src="Img5.jpg" /></a>
</div>

为了论证,让我们说它只是一个包含许多DIV和A的大页面的一小部分。

我想要做的是隐藏标签及其中的图像。如果我这样做,它可以工作:

$('a').hide();

但就像我说的那样,页面上有很多链接,所以我想要非常具体。基本上,我只想要<div>内的链接与“navcontainer”类。因此,根据我在网络上看到的内容,它应该是以下两种格式之一。第二个对我来说很完美。但两件都不适合我。

$('div.navcontainer a').hide();
$('div.navcontainer > a').hide();

我一定是想念一些愚蠢的事。有人可以告诉我吗?

7 个答案:

答案 0 :(得分:4)

您混合了类和Id选择器

$('#navcontainer a').hide();
$('#navcontainer > a').hide();

答案 1 :(得分:2)

选择器中的点前缀用于,但实际上你有一个ID,所以你应该使用一个哈希前缀,例如:

$('#navcontainer > a').hide();

div前缀放在选择器上会好得多 - 没有它会更快。

如果您使用纯粹基于ID的选择器,那么jQuery可以使用本机document.getElementById()调用。在实践中,这可能是最优的:

$('#navcontainer').children('a').hide();

答案 2 :(得分:2)

$('div#navcontainer a').hide();

.适用于类,您需要#来获取ID。

由于ID(应该)是唯一的,因此您不需要div前缀。

$('#navcontainer a').hide();

答案 3 :(得分:1)

您需要$('div#navcontainer'),您的代码正在寻找navcontainer类而非id。

答案 4 :(得分:1)

如果你的div有类navcontainer,请使用

 $(".navcontainer a").hide()

如果你有一个id为navcontainer的div。使用

 $("#navcontainer a").hide()

答案 5 :(得分:0)

根据你的html,你需要使用id选择器 -

$('div#navcontainer > a').hide();

答案 6 :(得分:0)

$('div#navcontainer a').hide();
$('div#navcontainer > a').hide();