jquery — фильтрует список элементов div по имени идентификатора, сгенерированному через переполнение стека

У меня есть список div, сгенерированных из mysql и php. Я хочу найти и отфильтровать список, используя автозаполнение фильтра jquery. Я хотел бы отфильтровать по элементу $ partno, я пытался сделать это в качестве идентификатора div, похоже, это должно работать …

Я думаю, что проблемы:

$("div[id^="+value+"]").filter(function ()
<div id="<?php echo $partno ?>">

любая помощь будет большой спасибо!

<div id="main_content">

<input id="searchInput" type="text" placeholder="Search..">

<script>
$(document).ready(function () {
$("#searchInput").on("keyup", function () {
var value = $(this).val().toUpperCase();
$("div[id^="+value+"]").filter(function () {
$(this).toggle($(this).text().toUpperCase().indexOf(value) > -1)
});
});
});
</script>

<?php
while ($row = mysql_fetch_assoc($results)) {
extract($row);
?>
<div id="<?php echo $partno ?>">
stuff inside the div
</div>
<?php
}
?>
</div>

-1

Решение

Теперь вы получаете объект jQuery со всеми элементами, чей ID начинается с переменной JS valueи затем фильтровать эти элементы с помощью функции, которая не возвращает селектор.

$().filter() предполагается использовать с селектором в качестве аргумента. Увидеть http://api.jquery.com/filter/ Больше подробностей.

Тогда я не уверен, что вы пытаетесь сделать с помощью функции переключения. Вы должны передать в качестве аргументов функцию продолжительности и / или функцию обратного вызова в качестве функции переключения jQuery. Увидеть http://api.jquery.com/Toggle/.

Если, насколько я понимаю, вам нужны все DIV, чей ID не совпадает что набирается, если (т. е. поисковый запрос не является подстрокой идентификатора div), тогда вы можете просмотреть каждый из них и скрыть их, если они не совпадают. И, если они совпадают, вы должны показать им. Проблема с использованием jQuery toggle() Функция здесь заключается в том, что он не скрывает и не отображает данные по ключу — он будет переключаться с того, что он скрыт или отображается при каждом вводе нового ключа.

Кроме того, так как я предполагаю, что вы не хотите все DIV должны быть скрыты, если их ID не совпадают (например, DIV с идентификатором) main_content), мы дадим те, которые должны быть отфильтрованы определенного класса filterable, Вы можете установить это на то, что наиболее удобно для вас.

Поскольку этот вопрос касается jQuery, я начну с предварительно заполненных элементов HTML. Вот рабочий пример JS.

<div id="main_content">
<input id="searchInput" type="text" placeholder="Search..">
<div class="filterable" id="1655">1655</div>
<div class="filterable" id="1134">1134</div>
<div class="filterable" id="3456">3456</div>
<div class="filterable" id="2453">2453</div>
<div class="filterable" id="256331">256331</div>
<div class="filterable" id="335">335</div>
</div>
<script>
$(document).ready(function () {
$("#searchInput").on("keyup", function () {
var value = $(this).val().toUpperCase();
$(".filterable").each(function(){
if ($(this).attr('id').toUpperCase().indexOf(value) === -1)  {
$(this).hide();
} else {
$(this).show();
}
});
});
});
</script>

Вот рабочая скрипка, демонстрирующая это.
https://jsfiddle.net/nz2w0y8a/

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]