У меня есть список 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>
Теперь вы получаете объект 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/
Других решений пока нет …