#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’