javascript - 如何排除jquery keyup 实时搜索期间的元素?
问题描述
我是 javascript/jquery 的新手,我想弄清楚如何在 ul id="#modulelist" 下排除/过滤掉 ul class="dropdown-menu"。我仍然希望能够搜索不在 ul class="dropdown-menu" 下的 li 元素。下面是我的 PHP 和 jquery 代码片段。
<ul class="to_do" id = "modulelist">
<?php
foreach($course_titles_not_completed as $course_title){
echo '<li class="dropdown">';
echo '<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false"><i class="fa fa-chevron-down"></i></a>';
echo '<ul class="dropdown-menu" role="menu">';
if(!empty($prereq_course_titles)){
foreach($prereq_course_titles as $prereq_course_title){
echo '<li><a href="#">';
echo $prereq_course_title;
echo '</a></li>';
}
}
else{
echo '<li><a href="#">';
echo 'No prerequisites';
echo '</a></li>';
}
echo '</ul>';
echo '<input type="checkbox" class="flat">';
echo $course_title;
echo '</li>';
}
?>
</ul>
<script>
$(document).ready(function(){
$('.search').on('keyup',function(){
var searchTerm = $(this).val().toLowerCase();
$("#modulelist li").each(function(){
var lineStr = $(this).text().toLowerCase();
if(lineStr.indexOf(searchTerm) === -1){
$(this).hide();
}else{
$(this).show();
}
});
});
});
</script>
我似乎不能不包括 ul class = "dropdown-menu" ,它是搜索中的子 li 元素。我不想删除 ul 和 li 元素作为解决方案,因为如果在搜索栏中没有输入任何内容,我仍然需要它们出现。
请帮帮我,提前谢谢你!
解决方案
您可以使用选择器选择下>
的第一级li
#modulelist
$("#modulelist > li").each((i, e) => {
console.log(e.tagName, e.className);
});
<script src="https://code.jquery.com/jquery-3.4.1.min.js" integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo=" crossorigin="anonymous"></script>
<ul class="to_do" id="modulelist">
<li class="dropdown">
<a href="#" class="dropdown-toggle">1</a>
<ul class="dropdown-menu" role="menu">
<li>1.1</li>
</ul>
</li>
<li class="dropdown">
<a href="#" class="dropdown-toggle">2</a>
<ul class="dropdown-menu" role="menu">
<li>2.1</li>
</ul>
</li>
</ul>
推荐阅读
- python-3.x - 从带有日期时间索引的 Pandas 数据框中子集行不起作用(?)
- javascript - 我想改变这个数据表中的头部?
- java - 获得大指数的 2 的幂的位数?
- python - 在 pandas 中使用 read_csv 时如何读取斜线
- java-native-interface - JIN c++ with springboot (Tomcat ENV->FindClass return null)
- scala - 匹配器失败时与字段名称的案例类差异
- html - 在垂直对齐宽度 100% 时使用 flexbox 向左、向右浮动
- c# - 两个不同的组合框显示相同的值,因为其中一个发生变化
- android - 如何在 LIBGDX android 应用程序中获取上下文()
- r - 将绘制的条从两个地块重新排列为 R 中的三个不同的地块