姓名 | 帮派 | 邮箱 |
---|---|---|
鳌拜 | 清廷 | Aobai@zhuanfou.com |
东方不败 | 日月神教 | Dongfang@zhuanfou.com |
陈近南 | 天地会 | Jinnan@zhuanfou.com |
洪秀全 | 太平天国 | Xiu@zhuanfou.com |
jQuery老仙,法力无边!jQuery老仙,神功盖世!jQuery老仙可轻松过滤搜索特定的元素。但是在学习这套功法前,会先把该功法涉及的知识点拆解开来,逐一道来。
jQuery的filter()的方法,与其说是过滤,不如说是把符合jQuery选择器规则的所有元素全都过一遍;在针对每个目标元素的函数中,this就是指此具体的目标元素。
$(document).ready(function(){ $("button").on("click", function() { $("p").filter(function() { alert( $(this).html() ); }); }); });
jQuery中的toggle函数以前说过的,toggle()方法可切换元素的隐藏和显示状态。但是如果给toggle方法传入一个布尔型的变量,则会toggle方法的效果如下:
因此,可以传入一个条件判断表达式(条件判断表达式的结果就是true或false):
// 只有当目标元素的内容等于“反清复明”时该元素才可以显示 // 相反,目标元素内容若不是“反清复明”,就会被隐藏 $(this).toggle( $(this).html() == "反清复明" );
JavaScript中判断字符串是否是另外一个字符串的子串,如果是则返回存在该子串的第一处的索引位置;若不存在该子串,则返回-1;因此indexOf方法可以判断字符串之间的包含关系。
var a = "东方不败".indexOf( "独孤求败" ); // 结果为-1 var b = "反清复明".indexOf( "反清" ); // 结果为0 var c = "I am a jerk!".indexOf( "jerk" ); // 结果为7
所谓的使用jQuery进行过滤搜索的原理就是:
filter()方法 + toggle( 判断条件 ) + indexOf()方法。
对目标选择的元素,采用filter()方法从头到尾撸一遍;然后在撸每一个具体的目标元素的时候进行toggle(判断条件),而判断条件就是该元素内容是否包含目标搜索词,如何判断内容是否具有目标搜索词,那就是用indexOf()方法来判断,找不到搜索词,结果就是-1,找到搜索词,结果就一定大于-1;从而根据此判断条件,来决定是否显示该元素。
$(document).ready(function(){ $("#searchBox").on("keyup", function() { var value = $(this).val().toLowerCase(); // 把大写字母变成小写 $("#jerkTable tr").filter(function() { $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1) }); }); });
$(document).ready(function(){ $("#searchBox").on("keyup", function() { var value = $(this).val().toLowerCase(); // 把大写字母变成小写 $("li").filter(function() { $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1) }); }); });
为了不至于太夸张,下例中把搜索框排除在外啦~
$(document).ready(function(){ $("#searchBox").on("keyup", function() { var value = $(this).val().toLowerCase(); // 把大写字母变成小写 $("body *").not("#searchBox").filter(function() { $(this).toggle($(this).text().toLowerCase().indexOf(value) > -1) }); }); });