请教jQuery代码中.toggle()内.indexOf(value)的具体作用
jQuery表格搜索中
indexOf(value)的作用解析 嘿,我来帮你把这段代码里的核心逻辑拆解明白!
首先咱们先聚焦到你疑惑的核心代码行:
$(this).toggle($(this).text().toLowerCase().indexOf(value) > -1)
我拆成几步给你讲清楚:
- 先看
$(this).text().toLowerCase():这里的$(this)指的是当前遍历到的表格行(<tr>),这部分代码是把该行所有文本内容转成小写——目的是让搜索不区分大小写,不管用户输入大写还是小写,都能匹配到对应内容。 - 重点来了:
indexOf(value)是JavaScript字符串的原生方法,它的作用是在当前行的文本里查找value(也就是用户输入的搜索词,已经转成小写)第一次出现的位置。如果找到了搜索词,它会返回一个≥0的索引值(字符串索引从0开始);如果整行文本里完全没找到这个搜索词,就返回-1。 - 接着
indexOf(value) > -1:这个判断其实就是在问「当前行的文本里包含用户输入的搜索词吗?」如果包含,结果是true,不包含就是false。 - 最后
$(this).toggle(...):jQuery的toggle()方法在这里接收一个布尔值参数——传true就显示该行,传false就隐藏该行。
再把修正转义字符后的完整代码贴出来,你能更直观地看整体逻辑:
$(document).ready(function() { $("#myInput").on("keyup", function() { var value = $(this).val().toLowerCase(); $("#myTable tr").filter(function() { $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1) }); }); });
整体流程就是:用户在输入框敲键盘时,实时获取输入内容并转成小写;然后遍历表格每一行,检查该行文本是否包含搜索词,包含就显示、不包含就隐藏,以此实现表格的实时搜索功能!
内容的提问来源于stack exchange,提问作者UI Developer Nepal
相关产品推荐
相关产品推荐

