-1

我有一个 SQL-PHP 打印表,并在表顶部选择。该表包含按城镇分类的联系人。

一开始,表格显示所有联系人。如果我指定城镇,我想隐藏其余的。

我正在尝试使用 jQuery 脚本

    <script>
    function updateit(){
    if ($("#table").filter("tr") === $("#selectTown").val()) $(this).show(););
    else {$(this).hide();};
    }        
    </script>

    [...]
    <select id="selectTown" onchange="updateit()"><option value="NY">New York</option><option value="TX">Texas</option></select>
    <table id="table">
    bla bla bla...
    </table>

在我尝试使用find()功能之前,但没有成功。

有什么建议么?

4

2 回答 2

0

我不确定你从哪里得到这个代码的想法,但filter()绝对没有做你认为它正在做的事情。 $("#table").filter("tr")将为您提供表格中的tr元素列表。该列表本身不会等于任何选定的值,它只是一个元素数组。

在此处模拟 jsFiddle中的一些内容,也许您想要更多类似的内容:

$('#selectTown').change(function () {
    $('#table tr').hide();
    $('#table tr').filter(function () {
        return $(this).find('td:first').text() === $('#selectTown').val();
    }).show();
});

这是做什么的:

  1. 绑定到元素的change事件select(一般来说,这比您在标记中执行的内联绑定更受欢迎)。
  2. 首先隐藏所有tr元素,稍后您将显示您想要的元素。
  3. 显示tr与过滤器匹配的所有元素。

在这种情况下,过滤器是一个函数,true如果元素内的文本td(您可能需要更新该选择器)等于所选值,则返回该函数。这里与您尝试的主要区别.filter()在于返回匹配(过滤)元素的列表,而不是要比较的实际值。过滤器内部是进行比较的地方,在这种情况下使用一个函数(对于任何被过滤的给定元素,它需要返回真或假)。

于 2013-10-28T15:26:45.853 回答
0

此行将$("#table").filter("tr") === $("#selectTown").val()文档元素与字符串进行比较,它不起作用。

最简单的解决方案是隐藏所有元素,然后选择并显示所有匹配的元素。例子:

$('tr').hide();
$('tr[value=' + $("#selectTown").val() + ']').show();
于 2013-10-28T15:26:49.707 回答