javascript - 如何正确链接 jquery 选择器?

标签 javascript jquery

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

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

表:

<table id="report-table" class="table">
<thead>
    <tr>
        <th class="">client</th>
        <th class="">coach</th>
        <th class="">groups</th>

    </tr>
</thead>

<tbody>
    <tr>
        <td class="name">John</td>
        <td class="coach">Peter </td>
        <td class="groups"> Skiers </td>
    </tr>
</tbody>

我有一个与搜索文本框的更改事件相关的函数。在这个函数中,我本质上想选择名称或教练列中不包含文本字符串的所有tr,并向它们添加一个类。我已经尝试了很多东西,但没有得到正确的语法,如何应该这样写吗?

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');

        }

最佳答案

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

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

$('#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 的行将保留在选择中,并将类 hidden 添加到其中。

关于javascript - 如何正确链接 jquery 选择器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20396428/

相关文章:

jquery - 有哪些关于使用 jQuery 和/或 HTML 构建游戏的优秀教程?

javascript - 使用 jQuery 将类添加到标签

javascript - 如何使用javascript限制文本框中的中文字符

javascript - 如何获取光标下的文字?

javascript - 我如何在 FireFox 浏览器的只读/禁用文本字段中启用文本选择

javascript - 如何在node js中将文件上传到服务器上?

javascript - 从 SELECT 中的多个选择中获取值

javascript - Enter 键在单击按钮时不起作用

javascript - event.dataTransfer.files 与 event.dataTransfer.items

jquery - 根据 URL 更改元素类名称