我的桌子上有几列和一行HTML5 data-attribute
。在阅读了相当多的SO问题和答案后,我尝试开发代码,允许通过文本或data-attribute
实时搜索表格,但我被卡住了。 我已经使用相同的代码处理<li>
元素(请参阅jsFiddle here),所以我认为我的问题出在我的jQuery选择器上。有没有人对我做错了什么有建议?
HTML:
<input id="search" placeholder="search" />
<table>
<tr>
<th colspan="4">
California
</th>
</tr>
<tr>
<td>Name</td>
<td>Company</td>
<td>Link</td>
<td>Notes</td>
</tr>
<tr data-state="california">
<td>Joe Smith</td>
<td>Acme</td>
<td>www.www.com</td>
<td>n/a</td>
</tr>
<tr data-state="california">
<td>Sue Smith</td>
<td>Acme</td>
<td>www.www.com</td>
<td>n/a</td>
</tr>
<tr data-state="california">
<td>Frank Jones</td>
<td>Etc</td>
<td>www.www.com</td>
<td>n/a</td>
</tr>
<tr>
<th colspan="4">
Alaska
</th>
</tr>
<tr data-state="alaska">
<td>Sue Henderson</td>
<td>Acme</td>
<td>www.com.com</td>
<td>n/a</td>
</tr>
<tr data-state="alaska">
<td>Jimmy Dean</td>
<td>Acme</td>
<td>www.com.com</td>
<td>n/a</td>
</tr>
</table>
jQuery的:
$("input#search").keyup(function(){
var filter = $(this).val();
var regExPattern = "gi";
var regEx = new RegExp(filter, regExPattern);
$("table tr").each(function(){
if (
$(this).text().search(new RegExp(filter, "i")) < 0 &&
$(this).data('state').search(regEx) < 0
){
$(this).hide();
} else {
$(this).show();
}
});
});
jsfiddle:http://jsfiddle.net/Q3cvH/17/
答案 0 :(得分:3)
您有3个tr
元素没有data-state
属性,您无法调用.search
。
在尝试对data-state
进行.search
之前,您应检查是否存在if($(this).data('state'))
:
{{1}}