Показать блок один раз по скрипту

94
07 ноября 2021, 02:50

Как показать блок только один раз, руководствуясь скриптом ниже?
Обе кнопки призваны показать класс, в случае щелчка по ним, но нужно, чтобы выполнялось условие: если блок уже показан, то скрывать при нажатии на кнопку не надо.

//Показать Форму заказать звонок 
jQuery(document).ready(function($) { 
    $(".callmeform").click(function() { 
       var element = document.querySelector(".call-form-wrap"); 
       if(element.classList.contains("show-block")) { 
          element.classList.remove("show-block"); 
       } else { 
          element.classList.add("show-block"); 
       } 
    }); 
});
.show-block { 
  display: block !important; 
}
<button class="callmeform">Показать</button> 
<div class="call-form-wrap" style="display: none"> 
   Теперь меня видно, чувак.  
</div> 
 
<button class="callmeform">Показать 2</button> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>

Answer 1

jQuery(document).ready(function($) { 
    $(".callmeform").click(function() { 
       var element = document.querySelector(".call-form-wrap"); 
       if(element.classList.contains("show-block")) { 
         } else { 
          element.classList.add("show-block"); 
       } 
    }); 
});
.show-block { 
  display: block !important; 
}
<button class="callmeform">Показать</button> 
<div class="call-form-wrap" style="display: none"> 
   Теперь меня видно, чувак.  
</div> 
 
<button class="callmeform">Показать 2</button> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>

Или так красивше:

 jQuery(document).ready(function($) { 
 $(".callmeform").click(function() { 
  var element = document.querySelector(".call-form-wrap"); 
  element.classList.contains("show-block") ? "" : element.classList.add("show-block");       
}); 
});
.show-block { 
  display: block !important; 
}
<button class="callmeform">Показать</button> 
<div class="call-form-wrap" style="display: none"> 
   Теперь меня видно, чувак.  
</div> 
 
<button class="callmeform">Показать 2</button> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>

Answer 2

Если без хитрых замыслов, то можно так!

//Показать Форму заказать звонок 
jQuery(document).ready(function($) { 
    $(".callmeform").click(function() { 
       var element = document.querySelector(".call-form-wrap"); 
       const isShow = element.classList.contains("show-block"); 
       if (isShow) return; 
       if(isShow) { 
          element.classList.remove("show-block"); 
       } else { 
          element.classList.add("show-block"); 
       } 
    }); 
});
.show-block { 
  display: block !important; 
}
<button class="callmeform">Показать</button> 
<div class="call-form-wrap" style="display: none"> 
   Теперь меня видно, чувак.  
</div> 
 
<button class="callmeform">Показать 2</button> 
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.0/jquery.min.js"></script>

Answer 3

Без Jquery

const btns = document.querySelectorAll('.callmeform') 
const div = document.querySelector('.call-form-wrap') 
 
btns.forEach(btn => btn.addEventListener('click', () =>  
  div.style.display != 'none' ? false : div.style.display = 'block' 
));
<button class="callmeform">Показать</button> 
<div class="call-form-wrap" style="display: none"> 
   Теперь меня видно, чувак.  
</div> 
<button class="callmeform">Показать 2</button>

READ ALSO
Как добавить display: none; в разметке html по клику?

Как добавить display: none; в разметке html по клику?

Как добавить style="display: none;" для test-class1 в разметке html по клику на кнопку без присвоения css-класса с display: none;?

115
Как отфильтровать массив?

Как отфильтровать массив?

У меня есть 2 массиваВ первом ( cell ) находятся 180 div элементов во втором ( arr 1 ) 22 div`а

136
Не могу выгрузить FastReport отчет на сервере

Не могу выгрузить FastReport отчет на сервере

Столкнулся с проблемой, что на домене выгрузка отчета не работает и выбрасывает ошибку

91
C# списки и объекты класса [закрыт]

C# списки и объекты класса [закрыт]

Хотите улучшить этот вопрос? Добавьте больше подробностей и уточните проблему, отредактировав это сообщение

303