这是小提琴:https://jsfiddle.net/6aevjxkx/38/
在下拉菜单中,如果您选择内布拉斯加州,您将看到华盛顿州的学校位置,该位置不应出现。
我认为问题是脚本正在搜索整个td部分以查找任何匹配的状态初始值。对于来自华盛顿的学校,它在地址中有“NE”,当你从下拉列表中选择内布拉斯加州时会出现它。
话虽如此,如何更新脚本以便它只能搜索div中具有类“state”的匹配状态?或者,如果有另一种解决方案,我的耳朵是敞开的。
提前致谢!
脚本代码
$('select#stateCollege').change( function(e) {
var letter = $(this).val();
if (letter === 'ALL') {
$ ('table.event tr').css('display','inline-block');
} else {
$('table.event tr').each( function(rowIdx,tr) {
$(this).hide().find('td').each( function(idx, td) {
if( idx === 0 || idx === 1) {
var check = $(this).text();
if (check && check.indexOf(letter) > 0) {
$(this).parent().css('display','inline-block');
}
}
});
});
}
});
答案 0 :(得分:1)
以下作品:
$('table.event tr').each(function(rowIdx, tr) {
var row = $(this).hide();
var state = row.find('.state').text().trim();
if (state === letter)
row.css('display', 'inline-block');
});
更新了演示:https://jsfiddle.net/6aevjxkx/42/
也就是说,隐藏当前行,然后找到.text()
元素的.state
,.trim()
,而不是.indexOf()
只使用===
比较相当容易混淆的letter
变量中的值。
请注意,在.each()
元素上使用td
是没有意义的,因为每行只有一个td
。