Как оставить только те div, которые содержат нужный текст?

Есть карточки товаров в дивах с классом ".fleft".
Следующий код находит мне нужные дивы и обводит красным:
var test = $(".fleft").find("h2:contains('текст')").closest('div');
var test2 = test.parent();
$(test2).css('border', '3px solid red');

Как мне скрыть остальные дивы и оставить только те, которые нашлись?
Еще возможен вариант в data атрибут записать нужный текст и фильтровать по нему как-то. Но пока у меня не получилось.
  • Вопрос задан
  • 286 просмотров
Пригласить эксперта
Ответы на вопрос 2
erniesto77
@erniesto77
oop, rb, py, php, js
попробуй что то вроде
var $filtered = $( ".fleft h2" )
  .filter(function( index ) {
    if ($(this).contains("текст"))
        return true;
    $(this).closest('div').hide();
    return false;
  });

$filtered.parent().css( "background-color", "red" );

это просто идея, не проверял
Ответ написан
Комментировать
AppFA
@AppFA
Frontend developer at Yandex
<div class="fleft">
    <h2>Product 1</h2>
</div>
<div class="fleft">
    <h2>Product 2</h2>
</div>

$(function () {
    var blocks = $('.fleft').find('h2');

    blocks.each(function () {
        var parent = $(this).parent('.fleft');

        if ($(this).text() == 'Product 1') {
            parent.css('border', '3px solid red');
        } else {
            parent.hide();
        }
    });
});
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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