nykakdelishki
@nykakdelishki
Системный аналитик

Почему не работает «скрыть» на не первых элементах?

На правую картинку у меня скрывается(или открывается) нижний элемент дива ,но почему то если я создам еще один элемент с помощью кнопки то нижний элемент больше нельзя скрывать или открывать...
Как это исправить?
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
При каждом добавлении нового элемента в #list-case вы назначаете обработчики клика всем существующим .img и .show, а не только свежесозданным. Если срабатывает два (или четыре, или шесть, или...) обработчика, которые выполняют toggleClass, то конечное состояние от начального отличаться не будет. Отсюда ваше кажущееся "не работает".

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

$('#list-case')
  .on('click', '.img', function() {
    $(this).closest('.case').remove();
  })
  .on('click', '.show', function() {
    $(this).toggleClass('none').closest('.case').find('.case-bottom').toggleClass('invise');
  });
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Самое простое это добавить к каждому контейнеру нумерацию и при клике на конкретный блок скрывать его по этой нумерации !
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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