Выберите первых детей ребенка с Jquery - PullRequest
2 голосов
/ 12 августа 2011

У меня есть html-структура, подобная этой:

<div class="one">
  <div id="two">
    <h2>Any</h2>
    <h4>Any</h4>
  </div>
  <div id="three">
  </div>
</div>

Я должен выбрать первый и первый дочерние элементы, в приведенном выше случае: #two, h2, h4, не зная идентификатора первого элементаназвание.Как я могу это сделать?

Я могу выбрать первый элемент, но если я добавлю содержимое (). Find () в div: сначала я не могу выбрать его дочерние элементы:

$(document).ready(function() {
    $(".one").mouseover(function () {  
        $(this).children('div:first').contents().find('h2,h4').stop(true, true).fadeIn('fast');
     });

    $(".one").mouseout(function () { 
        $(this).children('div:first').contents().find('h2,h4').stop(true, true).fadeOut('fast');
    });
});

Последний и рабочий (без мерцания!) Код:

$(".one").hover(function () {  
$(this).children('div:first').stop(true, true).fadeIn('fast');
}, function() {;
$(this).children('div:first').stop(true, true).fadeOut('fast');
});

Полагаю, мне нужно больше времени подумать, прежде чем приходить сюда и задавать вопросы.Во всяком случае, я узнал о .andSelf () и немного синтаксиса Jquery.Еще раз спасибо.

Ответы [ 3 ]

6 голосов
/ 12 августа 2011

Вам не нужно использовать оба find() и contents() - Попробуйте это:

$(document).ready(function() {
    $(".one").mouseover(function () {  
        $(this).children('div:first').children('h2,h4').stop(true, true).fadeIn('fast');
     });

    $(".one").mouseout(function () { 
        $(this).children('div:first').children('h2,h4').stop(true, true).fadeOut('fast');
    });
});

И если вам нужно также сохранить «первый» элемент в наборе узлов, используйте .andSelf() после второго .children() (согласно ответу @Felix).

3 голосов
/ 12 августа 2011

Вы можете использовать children [документы] и andSelf [документы] :

$(".one").mouseover(function () {  
    $(this).children().first().children('h2, h4').andSelf()....
});

Если вы не хотите добавлять первого потомка (родителя) в набор, пропустите andSelf.Ваш вопрос немного расплывчат в этом вопросе.Но я предполагаю, что вы на самом деле не хотите выбирать первого ребенка, только его детей.Если вы скрываете элемент, его дочерние элементы тоже скрываются.

1 голос
/ 12 августа 2011

Это:

  $(this).children('div:first').contents().find('h2,h4').stop(true, true).fadeIn('fast');

Кому:

  $(this).children('div:first').children('h2,h4').stop(true, true).fadeIn('fast');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...