首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这个JQuery代码用于从表中过滤数据的工作原理是什么?

这个JQuery代码用于从表中过滤数据的工作原理是什么?
EN

Stack Overflow用户
提问于 2014-01-23 09:26:56
回答 1查看 833关注 0票数 1

有人能向我解释一下下面的代码是干什么的吗?

代码语言:javascript
复制
<script>
 $(document).ready(function() {
     $('input.filter').on('keyup', function() {
          var rex = new RegExp($(this).val(), 'i');
          $('.searchable tr').hide();
          $('.searchable tr').filter(function() {
               return rex.test($(this).text());
          }).show();
      });
 });
</script>

它根据输入的值过滤表中的数据。

我能理解基本的功能,但我错过了整体思维的概念。

谁能解释一下吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-23 09:29:12

每次键入某些内容(keyup事件)时,隐藏所有<tr>,然后查找包含您键入的文本的所有<tr>,然后显示它们。

代码语言:javascript
复制
<script> 
    $(document).ready(function() {

     // key up from an input with class filter
     $('input.filter').on('keyup', function() {

          // create regular expression from value of the input
          var rex = new RegExp($(this).val(), 'i');

          // hide all <tr>
          $('.searchable tr').hide();

          // show all <tr> which contains your text
          $('.searchable tr').filter(function() {
               return rex.test($(this).text());
          }).show();
      }); 
}); 
</script>

正则表达式部分:

var rex =新的RegExp($(this).val(),'i');

这将创建一个正则表达式,它将与您在输入中输入的值匹配。i参数表示不区分大小写。

filter()中,您正在测试return rex.test($(this).text());。在这里,您使用的是自定义筛选函数。只有包含文本的行才不会被过滤掉(然后显示这些行)。

例如:

代码语言:javascript
复制
var rex = new RegExp('hello', 'i'); //you typed "hello" in the input
rex.test('hello world'); // true - contains hello
rex.test('HEllo world'); // true - contains hello (case insensitive)
rex.test('lorem ipsum'); // false - no hello present

jQuery filter()

如果您有以下HTML:

代码语言:javascript
复制
<a href="http://www.google.com">Link 1</a>
<a href="http://google.com" rel="nofollow">Link 2</a>
<a href="https://www.google.com">Link 3</a>
<a href="http://bing.com" class="red">Link 4</a>
<a href="http://www.bing.com" class="red">Link 5</a>
<a href="http://localgoogle.com">Link 6</a>

然后运行$('a').hide().filter('.red').show();,只显示Link 4Link 5。对于您来说,这是相同的概念,但是使用了自定义过滤器。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21304107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档