我在我的jsfiddle中创建了一个搜索选项:http://jsfiddle.net/alonshmiel/46wyH/33/
所以我有一个值(value
是搜索到的文本。)
我搜索包含值的所有li:value
// hide all the lists
$('#searchExcludeResult li').each(function() {
$(this)[0].style.display = "none";
});
// show all the li that contains the value: value
$('#searchExcludeResult li:contains(' + value + ')').each(function() {
$(this)[0].style.display = "list-item";
$(this)[0].innerHTML = $(this)[0].textContent.replace(value,
'<span style="font-weight: bold">' + value + '</span>');
});
它有效,但无论搜索的文本是小写还是大写,我都希望它能够正常工作。
例如:
<ul>
<li>United States</li>
<li>London, England</li>
<li>Moskow, Russia</li>
</ul>
,搜索到的文字为:e
,显示第一个(单位 e d stat e s)和第二个li(伦敦, E ngland)。
搜索到的文字可以是EN
,eN
,l
,L
等。
任何帮助表示赞赏!
答案 0 :(得分:2)
使用.filter()并匹配.toLowerCase() .text()
。
$('#searchExcludeResult li').filter(function () {
return $(this).text().toLowerCase().indexOf(value.toLowerCase()) !== -1;
}).each(function () {
答案 1 :(得分:1)
您可以将.contains
过滤器更改为不区分大小写,也可以创建自己的选择器。
jQuery.expr[':'].contains = function(a, i, m) {
return jQuery(a).text().toUpperCase().indexOf(m[3].toUpperCase()) >= 0;
};