我的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,不管是大写还是小写。
发布于 2012-01-06 01:50:28
您可以将.contains
筛选器更改为不区分大小写,或者创建自己的选择器。
jQuery.expr[':'].icontains = function(a, i, m) {
return jQuery(a).text().toUpperCase()
.indexOf(m[3].toUpperCase()) >= 0;
};
这就创建了一个新的选择器:图标(或者你也可以把它命名为insensitive-contains,或者任何你喜欢的名字)。它的用法与contains相同:$('div:icontains("Stack")');
将匹配:
<div>stack</div>
<div>Stack</div>
<div>StAcKOverflow</div>
或覆盖现有的.contains
过滤器:
jQuery.expr[':'].contains = function(a, i, 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>
发布于 2012-01-06 01:37:48
我不相信有一种方法可以用一个原始的选择器做到这一点。contains
选择器区分大小写,似乎没有不区分大小写的版本。我认为最好的方法是使用手动查询对象的筛选器
var filt = function (unused) {
$(this).text().toLowerCase().indexOf(txtSearch.toLowerCase()) !== -1;
};
https://stackoverflow.com/questions/8746882
复制相似问题