我有一个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()
功能之前,但没有成功。
有什么建议吗?
答案 0 :(得分:0)
我不确定你对这段代码的想法在哪里,但是filter()
肯定不会做你认为它正在做的事情。 $("#table").filter("tr")
将为您提供表格中tr
个元素的列表。该列表本身不会等于任何选定的值,它只是一个元素数组。
在a jsFiddle here中嘲笑一些事情,也许你想要更像这样的东西:
$('#selectTown').change(function () {
$('#table tr').hide();
$('#table tr').filter(function () {
return $(this).find('td:first').text() === $('#selectTown').val();
}).show();
});
这是做什么的:
change
元素的select
事件(优先于您在标记中执行的内联绑定,一般情况下)。tr
元素,您稍后会显示所需的元素。tr
元素。在这种情况下,过滤器是一个函数,如果true
元素内部的文本(您可能需要更新该选择器)等于所选值,则返回td
。这里与您尝试的主要区别在于.filter()
返回匹配(已过滤)元素的列表,而不是要比较的实际值。过滤器的内部是进行比较的地方,在这种情况下使用一个函数(对于任何被过滤的元素,它需要返回true或false)。
答案 1 :(得分:0)
这一行$("#table").filter("tr") === $("#selectTown").val()
将文档元素与字符串进行比较,它不起作用。
最简单的解决方案是隐藏所有元素,然后选择并显示所有匹配的元素。例如:
$('tr').hide();
$('tr[value=' + $("#selectTown").val() + ']').show();