如何使一个简单的jQuery过滤器列表只接受整个单词,所以它不匹配部分单词,只接受整个单词
How to make a simple jQuery filter list accept only whole words, so it doesn't match partial words, only whole words
http://jsfiddle.net/nicktheandroid/U8T8p/4/
(function($) {
$('.filterinput').keyup(function() {
var filter = $(this).val();
if (filter.length > 2) {
// this finds all links in the list that contain the input,
// and hide the ones not containing the input while showing the ones that do
$(list).find("a:not(:Contains(" + filter + "))").parent().slideUp();
$(list).find("a:Contains(" + filter + ")").parent().slideDown();
} else {
$(list).find("li").slideDown();
}
return false;
})
}(jQuery));
这将根据您键入的内容是否与列表中单词的任何部分匹配来过滤列表。我试图让它只匹配整个单词,所以在输入完整单词之前,它不会说它有匹配。正则表达式会是最好的吗?或?我需要帮助,我尝试过的任何方法都没有奏效。
像这样的东西:http://jsfiddle.net/U8T8p/10/
var containing = $('#list li').filter(function () {
var regex = new RegExp('''b' + a, 'i');
return regex.test($('a', this).text());
}).slideDown();
$('#list li').not(containing).slideUp();
正则表达式将匹配项限制为当前输入的文本以单词边界开头的匹配项。因此,输入"统计"后,您仍然会匹配"美国"。您可以通过更改为 RegExp('''b' + a + '''b', i)
来使其匹配完整的单词。
您可以使用已经提到的filter
方法。或者,您可以使用自己的自定义过滤器轻松扩展jQuery,这是重用代码的好方法。
$.expr[':'].containsWord = function(elem, index, match) {
var text = $(elem).text();
return !!text.match(new RegExp('''b' + match[3] + '''b'));
};
现在像使用任何其他内置过滤器一样使用它 :containsWord('Some word')
.请参阅 http://jsfiddle.net/U8T8p/9/
尝试这样的事情: http://jsfiddle.net/U8T8p/5/
$(list).find("a").filter(function() { return $(this).text() != filter; }).parent().slideUp();
$(list).find("a").filter(function() { return $(this).text() === filter; }).parent().slideDown();
您可以使用.filter
来检查文本并向下滑动这些元素,并将这些元素作为 jQuery 对象传递给 .not
以使其他元素向上滑动:http://jsfiddle.net/U8T8p/8/。
(function($) {
$('.filterinput').keyup(function() {
var filter = $(this).val();
if (filter.length > 2) {
var a = $(list).find("a");
var x = a.filter(function() {
return $(this).text() === filter;
});
x.parent().slideDown();
a.not(x).parent().slideUp();
} else {
$(list).find("li").slideDown();
}
return false;
})
}(jQuery));
相关文章:
- 高库存时期时间与时区不匹配
- react路由器使用简单的javascript路由器配置来处理不匹配的路径
- Javascript:图像与单选按钮的值不匹配
- 替换与单词'匹配的文本字符;购物车'替换为img图标
- 文本区域(jQuery)的结果不匹配
- 如果状态不匹配,则缩小为丑陋
- Regex:匹配以“AM”结尾的单词(不区分大小写比较)
- 为什么我网页的facebook点赞数与该网页的facebook页面不匹配
- 匹配 [单词] 但不匹配 [单词] 撇号正则表达式
- js 正则表达式不匹配单词边界
- js 删除某些不匹配的单词
- Regex匹配子字符串,但不匹配以单词为前缀的子字符串
- 如何使一个简单的jQuery过滤器列表只接受整个单词,所以它不匹配部分单词,只接受整个单词
- 比较值并为不匹配的单词添加错误类
- 如何匹配整个单词,而每个单词不区分大小写没有RegexOptions.IgnoreCase
- Jquery/Form -检查输入字段长度至少为5个字符-并且也不匹配某些单词
- javascript正则表达式与单词不匹配
- 正则表达式匹配单词,但不匹配其他字符串中的单词
- 过滤掉用户在 javascript 中键入文本时与顺序不匹配的单词
- RegEx - JavaScript -匹配单词而不匹配另一个单词