Селектор jQuery работает не так, как я ожидал - PullRequest
2 голосов
/ 20 января 2012

Рассмотрим следующий простой 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 ]

4 голосов
/ 20 января 2012

Вы перепутали класс и селектор идентификаторов

$('#navcontainer a').hide();
$('#navcontainer > a').hide();
2 голосов
/ 20 января 2012
$('div#navcontainer a').hide();

. для классов, вы хотите # для идентификаторов.

Поскольку идентификаторы (должны быть) уникальными, вам не нужен префикс div.

$('#navcontainer a').hide();
2 голосов
/ 20 января 2012

Точечный префикс в селекторе предназначен для классов , но у вас фактически есть идентификатор, поэтому вместо него следует использовать префикс хеша, например:

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

Это намного лучше не для установки префикса div на селекторе - без него будет намного быстрее.

Если вы используете чистый селектор на основе идентификаторов, тогда jQuery может использовать собственный document.getElementById() вызов.На практике это, вероятно, самый оптимальный вариант:

$('#navcontainer').children('a').hide();
1 голос
/ 20 января 2012

если у вас есть div с классом navcontainer, используйте

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

если у вас есть div с id navcontainer. использовать

 $("#navcontainer a").hide()
1 голос
/ 20 января 2012

Вам нужно $('div#navcontainer'), ваш код ищет класс navcontainer, а не id.

0 голосов
/ 20 января 2012
$('div#navcontainer a').hide();
$('div#navcontainer > a').hide();
0 голосов
/ 20 января 2012

Исходя из вашего HTML, вам нужно использовать селектор идентификатора -

$('div#navcontainer > a').hide();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...