Ориентация на определенный класс с помощью jQuery

0

Я пытаюсь отобразить скрытый класс в jQuery, но он не применяется к классу, на который я нацелен. Он отображает весь класс:

<div class="feeds">
  <input class="post_id" />
  <textarea class="commentdata"></textarea>
  <button class="mmore">More</button>
  <p class="time">time</p>
  <div class = "comment_data">
    <div class = "comment">
      <p> Comments </p>
    </div>
  </div>
</div>

<div class="feeds">
  <input class="post_id" />
  <textarea class="commentdata"></textarea>
  <button class="mmore">More</button>
  <p class="time">time</p>
  <div class = "comment_data">
    <div class = "comment">
      <p> Comments </p>
    </div>
  </div>

<div class="feeds">
  <input class="post_id" />
  <textarea class="commentdata"></textarea>
  <button class="mmore">More</button>
  <p class="time">time</p>
  <div class = "comment_data">
    <div class = "comment">
      <p> Comments </p>
    </div>
  </div>
</div>

Класс comment_data display: none по умолчанию и должен отображаться только при нажатии кнопки " Дополнительно". Работает, но отображает все комментарии для 3 div.

Это мой код jQuery:

$( ".mmore" ).click(function() {
   $('.comment_data').slideToggle("slow");
});

3 ответа

6
Лучший ответ
$('.mmore').click(function() {
   $(this).parents('.feeds').find('.comment_data').slideToggle('slow')
});
  • 2
    Это более удобно, поскольку меньше зависит от структуры HTML.
  • 0
    Это добилось цели. Вы только что опечатали мой день продуктивно. Большое спасибо.
1

Вы можете использовать .closest() чтобы найти.feeds div, а затем использовать .find() для *.comment_data * div

$('.mmore').click(function() {
   $(this).closest('.feeds').find('.comment_data').slideToggle('slow')
});
0

Вы выбираете все объекты, соответствующие селектору .comment_data.

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

$( ".mmore" ).click(function() {
   $(this).parent().find('.comment_data').slideToggle("slow");
});

Ещё вопросы

Сообщество Overcoder
Наверх
Меню