我的html看起来像这样
<input id="txt" value=""></input> <div class="link-item">jK</div> <div class="link-item">JFOO</div>
我的js
$('#txt').keyup(function(){ var txtsearch = $('#txt').val(); var filt = $("div.link-item:contains('" + txtsearch +"')"); $("div.link-item").css("display","none") .filter(filt) .css("display","block"); });
我正在寻找在客户端动态过滤内容.当我键入大写字母j时,它只返回第二个div,而我想要获取包含j的所有div,无论是大写还是小写.
解决方法
您可以将.contains过滤器更改为不区分大小写,或创建自己的选择器.
jQuery.expr[':'].icontains = function(a,i,m) { return jQuery(a).text().toUpperCase() .indexOf(m[3].toUpperCase()) >= 0; };
这将创建一个新的选择器:icontains(或者你可以命名它不敏感 – 包含,或任何适合你的想法).
它的用法与以下内容相同:$(‘div:icontains(“Stack”)’);会匹配:
<div>stack</div> <div>Stack</div> <div>StAcKOverflow</div>
或覆盖现有的.contains过滤器:
jQuery.expr[':'].contains = function(a,m) { return jQuery(a).text().toUpperCase() .indexOf(m[3].toUpperCase()) >= 0; };
有了这个,
$("div:contains('John')");
将选择所有这三个元素:
<div>john</div> <div>John</div> <div>hey hey JOHN hey hey</div>