期望的行爲如何通過TD內容
顯示基於搜索中的所有表的前兩列匹配過濾多個表或隱藏表(全表,而不是表單元格) - 如果有匹配的<tr>
的第一個或第二個<td>
,顯示該表,否則隱藏該表。
我已經試過
$("input").on("keyup", function() {
var matcher = new RegExp($(this).val(), "gi");
$(".my_table")
.hide()
.filter(function() {
return matcher.test($(this).find("td").text());
})
.show();
});
table {
font-family: arial, sans-serif;
border-collapse: collapse;
width: 50%;
}
td,
th {
border: 1px solid #dddddd;
text-align: left;
padding: 8px;
}
tr:nth-child(even) {
background-color: #dddddd;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text">
<table class="my_table">
<thead>
<tr>
<th>
First Name
</th>
<th>Last Name</th>
<th>Text</th>
</tr>
</thead>
<tbody>
<tr>
<td>David</td>
<td>Johnman</td>
<td>Here is some text</td>
</tr>
<tr>
<td>Felix</td>
<td>Mann</td>
<td>Cake</td>
</tr>
<tr>
<td>Peter</td>
<td>Pan</td>
<td>Green green grass of home</td>
</tr>
</table>
<br><br>
<table class="my_table">
<thead>
<tr>
<th>
First Name
</th>
<th>Last Name</th>
<th>Text</th>
</tr>
</thead>
<tbody>
<tr>
<td>David</td>
<td>Stone</td>
<td>Here is text</td>
</tr>
<tr>
<td>Trevor</td>
<td>Barry</td>
<td>Cake</td>
</tr>
<tr>
<td>Xylophone</td>
<td>Greet</td>
<td>Green green grass of home</td>
</tr>
</table>
不反對把班前兩個表格單元格每一行是否有幫助目標搜索,只是不完全確定如何定位正在過濾的表的實例。
最終我想在輸入3個字符後開始過濾,因此可能將代碼包裝在輸入長度的條件檢查中,並在輸入長度爲0(退格內容後)時顯示所有表格。
我想這個代碼和打字的時候'da',例如,第二個表是隱藏的,第一表可見,即使兩個表中包含搜索文本 - 所以是我原來的邏輯中缺少的東西。 [jsFIddle鏈接](https://jsfiddle.net/rwone/echd66uc) – user1063287
似乎有一個[問題](https://stackoverflow.com/questions/1520800/why-does-a-regexp-with-global -flag-give-wrong-results)在使用'g'選項時使用'RegExp'對象,請參閱[示例](https://jsfiddle.net/c5mjukxf/1/)。當我把'g'放在你的小提琴裏時,它就會起作用。 – sauerburger