JQuery Div родитель и ребенок - PullRequest
1 голос
/ 17 июля 2009

Хорошо, допустим, у меня есть эти повторяющиеся div.

<div class="upcoming">
<div class="roll" style="display:none">Hidden</div>
</div>
<div class="upcoming">
<div class="roll" style="display:none">Hidden</div>
</div>
<div class="upcoming">
<div class="roll" style="display:none">Hidden</div>
</div>

Это неверно, но как мне это сделать, используя jQuery, чтобы показать класс "roll", который содержится внутри при наведении курсора на один из этих элементов div.

<script type="text/javascript">
$(document).ready(function() {  
    $(".upcoming").hover(function() {
        $(this + ".roll").fadeIn("Fast");
    }, function() {
        $(this + ".roll).fadeOut("Fast");
    });
});
</script>

Есть идеи? :)

Ответы [ 3 ]

5 голосов
/ 17 июля 2009

Используйте форму jQuery(expression, context):

$('.roll', this)
2 голосов
/ 17 июля 2009
$(function() {  
  $("div.upcoming").hover(function() {
    $("div.roll", this).fadeIn("fast");
  }, function() {
    $("div.roll", this).fadeOut("fast");
  });
});

Просто общий совет: везде, где это возможно с jQuery и CSS, будьте конкретны в своих селекторах. Попробуйте использовать селекторы классов без тега в качестве крайней меры.

  • Лучший: # id
  • Хорошо: tag или tag.class
  • Худший: .класс

Почему? Ну, селектор типа ".upcoming" должен в основном проходить по всему дереву или поддереву. Есть методы DOM для ускорения двух других (getElementById или getElementsByName соответственно). Это может существенно повлиять на время загрузки страницы.

0 голосов
/ 17 июля 2009

В данном конкретном случае

$(this).next()

также даст вам ссылку на дочерний элемент .roll div.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...