JQuery: выбор неизвестного дочернего элемента - PullRequest
1 голос
/ 10 января 2012

У меня есть список словарей, и я хочу получить доступ ко второму дочернему элементу, не зная, что это за элемент.Например:

    <dl>
        <dd>
            <div></div>
            <div></div> (select this item - however can be any html element)
       </dd>
       <dd>
            <div></div>
            <div></div> (select this item - however can be any html element)
       </dd>
       <dd>
            <div></div>
            <div></div> (select this item - however can be any html element)
       </dd>
    </dl>

Я пытался ...

    $('dd').each(function() {
        $(this + ':nth-child(2)').addClass('hover');
    }

Я пытался это с серией разного номера 0-2, пытаясь найти элемент.0 помещает класс во все первые дочерние HTML-теги.Например:

    <html class="hover">
    <body class="hover">
        <div class="hover"> 

... и т. Д. Не то, что я хочу кстати.Приводя меня к мысли, что $ (this) на самом деле нацелен на окно, а не на мои отдельные элементы dd.

В любом случае, если кто-то сможет пролить свет, я был бы очень благодарен.Спасибо.

Ответы [ 2 ]

3 голосов
/ 10 января 2012

Проблема только в вашем синтаксисе.Попробуйте:

$('dd').each(function() {
    $(':nth-child(2)', this).addClass('hover');
}
1 голос
/ 10 января 2012

Нет необходимости в вызове .each() - большинство функций jQuery успешно работают со списками элементов.

Просто сопоставьте все .children() из <dd>, которые являются вторым дочерним элементом их родителя, идобавьте требуемый класс:

$('dd').children(':nth-child(2)').addClass('hover');

рабочая демонстрация на http://jsfiddle.net/alnitak/TETbE/

или (благодаря @ChrisPratt) вы можете комбинировать селекторы:

$('dd > :nth-child(2)').addClass('hover');
...