jQuery - Не уверенный, какой метод использовать, самый близкий () и родитель () не работает

Бог я чувствую, что массово рассылаю stackoverflow, это - мое 3-е сообщение на сегодняшний день. Извините, heh.

Я даже отправил вопрос относительно этого прежде, отчасти, но я изменил код немного с тех пор, таким образом, я думал, что было лучше отправить новый вопрос.

$('.pmlist ul li h4 .toggle').click(function() {
    $(this).closest('.meddel').toggle(250);
});

Это - то, что я имею теперь. Причина, почему самое близкое () метод не работает, состоит в том, потому что отделение .meddel только рядом с элементом H-4. И самый близкий () только проверяет право дерево DOM, игнорируя другие дочерние элементы.Правильно? родитель () работает почти то же и не работает также.

И поскольку я только хочу переключить самое близкое .meddel отделение в элементе, мне нужно что-то, что, да выгоняет, захватывает ближайший и не всех их.

Для разрешения его немного вот, HTML для одного элемента списка:

<li class="item">

<h4><a class="toggle">[topic]</a><small>2010-04-17 kl 12:54 by <u>[name]</u></small></h4>

<div class="meddel">
    <span>
        <img style="max-width: 70%; min-height: 70%;" src="profile-images/img.jpg" alt="" />
        <a href="account.php?usr=47">[name]</a>
    </span>

    <p>text</p>
</div>

</li>

У меня есть несколько объектов как этот, и если я нажимаю на одну ссылку переключателя, я просто хочу, чтобы ближайший .meddel был переключен, как упомянуто прежде.

Спасибо.

6
задан qwerty 3 December 2010 в 22:15
поделиться

3 ответа

Вот еще один способ приблизиться к этому:

$('.pmlist ul li h4 .toggle').click(function() { 
  $(this).closest('h4').siblings('.meddel').toggle(250); 
});

Это подходит к

, а затем ищет родственный элемент .meddel для переключения. Подробнее о .siblings () можно прочитать здесь . Этот метод делает его более устойчивым к изменениям разметки, но если скрипт все равно сильно связан, это может не сильно беспокоить.

5
ответ дан 8 December 2019 в 13:45
поделиться

Вы можете просто использовать:

$(this).parent().next().toggle(250);

Обновление (согласно комментарию tvanfosson):

$(this).parents(".item").find(".meddel").toggle(250);

Это гораздо более гибкое и безопасное решение. Сначала он получает контейнер записи ( .item ), затем находит тело записи и переключает его. Он менее чувствителен к изменениям функций в DOM.

9
ответ дан 8 December 2019 в 13:45
поделиться

путь до элемента списка, затем найдите содержащийся элемент с соответствующим классом. Это будет более надежным в отношении большинства незначительных изменений DOM, то есть не зависит от относительного размещения.

$('.pmlist ul li h4 .toggle').click(function() {
    $(this).closest('li').find('.meddel').toggle(250);
});
3
ответ дан 8 December 2019 в 13:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: