Есть подобная структура кода:
<div class="lang-line">
<div class="sh-name">ab</div>
<div class="lo-name">Abkhazian</div>
</div>
<div class="lang-line">
<div class="sh-name">aa</div>
<div class="lo-name">Afar</div>
</div>
Хочу настроить быстрый поиск языка, так что добавил все в обьект JQ:
$.each($('.langs .lang-line'), function() {
l.push([$(this)]);
});
Но я не могу разобраться как использовать эти обьекты. Мне нужно сверять их название с введеным и если оно совпадает то все остальные обьекты должны быть скрыты, а этот остаться видимым:
Вот я пытался это реализовать:
for (var j=0; j<strArray.length; j++) {
console.log(strArray[0].{0}.innerText);
if (strArray[j][0][0][1].toLowerCase().match(str.toLowerCase())) {
output.push(strArray[j].text());
$(".lang-line").addClass("lang-line-srchprog");
strArray[j].parent().style("display", "table");
}
}
output - массив содержащий информацию которая будет выведена позже;
strArray - тот же массив l только принят функцией;
str - текст который был введен пользователем (пользователь вводит в input что он хочет найти).
Вот так выглядит сам обьект:
Как получить доступ ко всем этим параметрам? В особенности мне нужен innerText/textContent что бы сравнить сразу короткое название и длинное одновременно(так как оно ведь считывает содержимое всех чилдренов, верно?)
Попробуйте что-то около этого:
function filterLang(contains) {
contains = contains.toLowerCase(); // к нижнему регистру
$('.langs .lang-line').each((i, el) => {
let $langLine = $(el);
let langName = $langLine.text().toLowerCase(); // текст блока с id и именем языка
let isContains = langName.indexOf(contains) >= 0; // чекаем содержит ли в себе
$langLine.css('display', (isContains ? '' : 'none')); // скрываем если не содержит иначе показываем
});
}
$('#searcher').keyup(e => {
filterLang($(e.target).val());
});
.sh-name {
display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="searcher" type="text">
<div class="langs">
<div class="lang-line">
<div class="sh-name">ab</div>
<div class="lo-name">Abkhazian</div>
</div>
<div class="lang-line">
<div class="sh-name">aa</div>
<div class="lo-name">Afar</div>
</div>
</div>
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости