Javascript 如何正确链接jquery选择器?

Javascript 如何正确链接jquery选择器?,javascript,jquery,Javascript,Jquery,我正在尝试使用jquery对我的表实现一个快速搜索/过滤功能。本质上,我想从要隐藏的搜索框中隐藏所有没有我要查找的字符串的行 我有一个动态创建的表和一个用作列表过滤器的文本字段 表: $(“#名称,#组”)(“*:包含(“+searchValue+”)基本上会尝试访问*:contains(“foo”)(假设searchValue是返回的对象的“foo”)属性(“#name,#groups”))。我相信我不必说jQuery对象没有具有如此奇怪名称的属性 首先,您必须为所有单元格指定一个公共类而不

我正在尝试使用jquery对我的表实现一个快速搜索/过滤功能。本质上,我想从要隐藏的搜索框中隐藏所有没有我要查找的字符串的行

我有一个动态创建的表和一个用作列表过滤器的文本字段

表:

$(“#名称,#组”)(“*:包含(“+searchValue+”)
基本上会尝试访问
*:contains(“foo”)
(假设
searchValue
返回的对象的
“foo”
)属性(“#name,#groups”)
)。我相信我不必说jQuery对象没有具有如此奇怪名称的属性

首先,您必须为所有单元格指定一个公共类而不是ID。然后,您应该选择所有行,查看
.name
.coach
是否包含搜索值。用于获取两个单元格都不匹配的单元格:

$('#report-table > tbody > tr').filter(function() {
    return $(this).children('.name').text().indexOf(searchValue) === -1 &&
           $(this).children('.coach').text().indexOf(searchValue) === -1;
}).addClass('hidden');

如果
.name
单元格和
.coach
单元格均不包含搜索值,则筛选器回调将返回
true
。回调返回
true
的那些行保留在选择中,并将类
隐藏
添加到这些行中。

可能与您相关:看这个hmm,有人写了一篇关于我的语法问题的asnwer,其中添加了一个小补丁。parent(),但似乎他删除了他的答案…哦,id是一个输入错误,fixedhow使用indexOf比您以前使用的答案更好。not(“:contains(“+searchValue+”)?我以前的答案有一个主要缺陷:如果在一行中,
.name
包含搜索词,但
.coach
没有,则该行仍将被隐藏。这是因为每个单元格都是单独检查的,没有考虑到同一行中的另一个单元格可以匹配。这与
:包含
.indexOf
无关,只与元素的处理方式有关。如果您不喜欢上述解决方案中的
.indexOf
,也可以使用
$(this).children('.name:contains(“+searchValue+”))。length==0
。这有意义吗?啊,谢谢你的澄清,那会导致晚上的虫子搜索!
hideSearch: function(e){

        console.log("hideSearch called");
        var searchValue = this.$el.find('.search-text').val();

        if(!searchValue ){
            console.log("hideSearch: empty search param");
            this.$el.find('tr').removeClass('hidden');
        }
        else{
            console.log("hideSearch: searched for: " + searchValue);
            //$('(#name, #groups):contains:not("'+searchValue+'")').parent().addClass('hidden');
            var selection =$('#name, #groups').('*:contains("'+searchValue+'")');

            console.log(selection);
            //console.log($('#name, #groups').('*:contains("'+searchValue+'")'));
            //$('(#name, #groups):contains("'+searchValue+'")').parent().addClass('hidden');
            //$('#name, #groups').('*:contains:not("'+searchValue+'")').parent().addClass('hidden');

        }
$('#report-table > tbody > tr').filter(function() {
    return $(this).children('.name').text().indexOf(searchValue) === -1 &&
           $(this).children('.coach').text().indexOf(searchValue) === -1;
}).addClass('hidden');