Скрыть определенные элементы, если другой элемент содержит строку с помощью jQuery

#javascript #jquery

#javascript #jquery

Вопрос:

У меня на моем сайте есть карусель купонов, и я хочу добиться следующей функциональности:
для каждого купона, если фирменное наименование содержит текст «test», затем скройте div, который его содержит, что означает, что я хочу скрыть все купоны, у которых есть «test» в их фирменном наименовании.
Итак, предположим, что каждый купонный div имеет следующий вид:

 <div class="coupon-box">
  <div class="brandName">Test1</div>
  <div class="coupon-image"><img src="coupon-image.jpg"></div>
</div>
  

Я хочу скрыть каждый купон, в названии которого есть «test». Мне действительно удалось выполнить первую часть (получение фирменных наименований, содержащих текст), но я не знаю, как скрыть поле с купоном.
До сих пор я делал следующее:

 $( document ).ready(function() {
    $('.brandName').each(function(){
       var el= $(this);
       var text = el.html();
       if (text.indexOf("test") !==-1){
          //missing-code
       }
   });
});
  

Есть предложения? Я пытался добавить $('.coupon-box').css('display', 'none'); , но он просто скрывает все купоны

Комментарии:

1. Ваш пример просто неверен, потому что js чувствителен к регистру, 'test' != 'Test' . Теперь я не уверен, каков ваш ожидаемый результат ?!

2. да, это не моя точка зрения, конечно, я не ищу тест, и, как я уже сказал, мне удалось получить нужные мне купоны

Ответ №1:

Это не работает, потому что вы выбираете все элементы, а не тот, в котором вы находитесь в данный момент. Итак, вам нужно искать родительский элемент элемента.

Итак, выберите родительский элемент элемента

 el.parent().hide();
  

или найдите ближайшего предка с классом

 el.closest(".coupon-box").hide();
  

Комментарии:

1. Да! parent не сработал, но был самый близкий способ сделать это! Я совершенно забыл об этом!

Ответ №2:

 $( document ).ready(function() {
    $('.brandName').each(function(){
       var el= $(this);
       var text = el.html();
       if (text.indexOf("test") !==-1){
         el.parent().css('display', 'none');
       }
   });
});
  

Будьте осторожны, потому что ‘test’ != ‘Test’