我可以用什么jQuery选择器组合隐藏不包含搜索的TD父母?

时间:2012-01-30 16:43:36

标签: jquery jquery-selectors

我有一个表格,显示所有可用的课程。每个班级的TR ID是班级提供者+年级(例如:8年级的虚拟班级将是“Virtual8”)。然后我有一个'Provider'组合框,'Grade'组合框和'Class Title'文本框。单击“显示”时,它应隐藏所有TR,显示显示正确“提供者”+“成绩”ID的TR,然后隐藏任何不包含类搜索的TD的父(tr)。

目前,课程标题搜索根本不显示任何内容。

我知道这非常令人困惑,而且可能有一种更简单的方法。任何建议将不胜感激。如果我将“课程标题”框留空并仅搜索提供者和年级,则表单正常;但是,在搜索中添加类标题不会做任何事情。

守则:

<script src="jquery.missing.js" type="text/javascript"></script>
<script type="text/javascript">

$(document).ready(function(){

    $("#display").click(function() { 

        $('tr[id^="Independent"]').hide();
        $('tr[id^="Virtual"]').hide();
        $('tr[id^="Innovative"]').hide();
        $('tr[id^="Lincoln"]').hide();
        $('tr[id^="Missouri"]').hide();
        $('tr[id^="Calvert"]').hide();

        var result = $('#theprovider').val() + $('#thegrade').val();
        $('tr[id*="' + result + '"]').show();

        var search = $('#searchclass').val();
        $('td:missing("' + search + '")').closest('tr').hide();
    });

});
</script>

Missing.js Code(Darcy Clarke提供):

$.expr[':'].missing = function(elem, index, match) {
    return (elem.textContent || elem.innerText || Sizzle.getText([elem]) || "").indexOf(match[3]) == -1;
}

1 个答案:

答案 0 :(得分:1)

只有在封闭双引号内使用它们时才必须逃避怀疑引号,同样适用于单引号。

您可以尝试使用missingnot这样的组合代替contains

$('tr:gt(0)').not(":contains('" + search + "')").hide();