Как я могу исключить эти элементы из выбора jQuery? - PullRequest
7 голосов
/ 16 июня 2009

Мой JQuery:

$("ul.dropdown ul").slideDown("slow");
$("ul.dropdown ul ul").children().hide();

Это заставляет те, которые соответствуют второму селектору, отображаться в течение короткого времени. Как я могу исключить второй набор из первого набора и показать только первый набор?


Мой HTML:

    <ul class="dropdown">
        <li style="margin: 0px">
            <span id="header">
                <img src="back.gif" alt='background' style="border:none;" />                        
                <span style="position: absolute; top: 5px; left: 2px;">
                    <img src="button.gif" style="border:none;" />
                </span>                 
                <span style=" position: absolute; top: -5px; left: 70px;">
                    <p style="background-color: white; width: 200px; height: 20px; font-size: 1.2em; border: 2px solid blue">Menu</p>
                </span>
            </span>
            <ul class="sub_menu">
                 <li><a href="#">Artificial Turf</a></li>
                 <li><a href="#">blah</a></li>
                 <li id="1">
                    <a id="1.1" href="#">Batting Cages</a>
                    <ul id="2">
                        <li><a href="#">Indoor</a></li>
                        <li><a href="#">Outdoor</a></li>
                    </ul>
                 </li>
                 <li><a href="#">Benches &amp; Bleachers</a></li>
                 <li><a href="#">Communication Devices</a></li>
                 <li><a href="#">Dugouts</a></li>
                 <li><a href="#">Fencing &amp; Windscreen</a></li>
                 <li><a href="#">Floor Protectors</a></li>
                 <li><a href="#">Foul Poles</a></li>
                 <li><a href="#">Netting</a></li>
                 <li><a href="#">Outdoor Furniture &amp; Storage</a></li>
                 <li><a href="#">Outdoor Signs</a></li>
                 <li><a href="#">Padding</a></li>
                 <li><a href="#">Scoreboards</a></li>
                 <li><a href="#">Shade Structures</a></li>
                 <li><a href="#"> - VIEW ALL - </a></li>
            </ul>
        </li>
    </ul>

Ответы [ 3 ]

32 голосов
/ 16 июня 2009

Это именно то, для чего метод 'not' предназначен для:

$('ul.dropdown ul').not('ul.dropdown ul ul').slideDown('slow');
5 голосов
/ 16 июня 2009

Это, вероятно, будет работать:

$("ul.dropdown > li > ul").slideDown("slow");

">" означает только прямые дочерние элементы (http://docs.jquery.com/Selectors/child#parentchild).). Итак, пока ваша иерархия похожа на эту (что, после вашего редактирования, похоже, так и есть):

<ul>
  <li>
    <ul>
..

это скорее всего будет работать. Надеемся, что соответствующие изменения очевидны ...

1 голос
/ 16 июня 2009

Это может сработать.

$("ul.dropdown ul:not(ul > ul)").slideDown("slow");
$("ul.dropdown ul ul").children().hide();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...