parent (). children () и переключатель не работает - PullRequest
1 голос
/ 17 ноября 2011

У меня есть следующий HTML:

<div class="connections">
    <h2>Grads that share your interests</h2>
        <div id="connections_nav" class="collapse">
            <ul>
            <li><h3><a href="">Sally Struthers </a></h3><p>Class of 2008</p></li> 
                <li><h3><a href="">Sally Struthers </a></h3><p>Class of 2008</p>
                                </li>
            <li><h3><a href="">Sally Struthers </a></h3><p>Class of 2008</p>
                                </li> 
            </ul>
        </div>
</div> 

и следующий CSS:

.connections h2 {
    background-image: url(images/show.gif);
    background-position: 0px;
    background-repeat: no-repeat;
    color: #660a11;
    font-size: 13px;
    font-weight: bold;
    margin: 0px 0px .4em;
    padding: 0px 0px 0px 25px; }

.connections .hide h2 {
    background-image: url(images/hide.gif);
    background-position: 0px;
    background-repeat: no-repeat; }

.connections h2.over {
    background-image: url(images/hover-show.gif);
    background-position: 0px;
    background-repeat: no-repeat; }

.connections .hide h2.over {
    background-image: url(images/hover-hide.gif);
    background-position: 0px;
    background-repeat: no-repeat; }

со следующим jQuery:

$(document).ready(function() {

$('.connections h2').click(function() {
    $(this).parent().children('.collapse').toggle('slow');
    $(this).toggleClass('hide');
});

$('.connections h2').hover( 
    function() {
        $(this).toggleClass('over');
      },
      function () {
        $(this).toggleClass('over');
});

});

То, что происходит, - исчезает весь div.Когда я вынимаю код $(this).toggleClass('hide');, div коллапса правильно сворачивается (но класс 'hide', который показывает изображение замкнутого треугольника, очевидно, не применяется).Это почему?

1 Ответ

1 голос
/ 17 ноября 2011

Строка $(this).toggleClass('hide') изменяется <h2></h2> на <h2 class="hide"></h2>.

Следовательно, правильные селекторы CSS должны быть:

.connections h2.hide {}
.connections h2.hide.over {}

Рабочий пример: http://jsfiddle.net/PTnXU/

Ваш оригинальный селектор, .connections .hide h2.over, был бы хорош, если бы у вас был другой элемент между <div> и <h2>, например:

<div class="connections">
  <div class="hide">
    <h2 class="over"></h2>
  </div>
</div>
...