我即将编辑一个插件,我有一个jquery列表的问题,它过滤并隐藏了表/ html的一些元素。
$(document).ready(function(){
$('tr').find('td:contains("1,0")').closest('tr').hide();
$('tr').find('td:contains("1.0")').closest('tr').hide();
});
这就是我现在正在使用它的方式。功能是我不想在行中的任何地方看到“1,0”和“1.0”的行。 “1,0”或“1.0”周围可以有任何东西。像“汽车1,0”或“纸1.0”。
我遇到的问题是,此代码还隐藏了“paper 11.00”和“cars 1,020”等行。 Anyrow包含任何形式的“1.0”“1,0”。
有人可以帮我调整“过滤器”,以避免隐藏“11.00”或“1,020”吗?
答案 0 :(得分:0)
使用.filter()
和td.text().match
与正则表达式\b1[.,]0\b
匹配1.0
和1,0
$(document).ready(function() {
$('td')
.filter(function() {
return $(this).text().match(/\b1[.,]0\b/)
})
.closest('tr')
.hide();
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table>
<tr>
<td>1.0</td>
</tr>
<tr>
<td>1,0</td>
</tr>
<tr>
<td>1.01</td>
</tr>
<tr>
<td>11.0</td>
</tr>
<tr>
<td>var 1.0 bar</td>
</tr>
<tr>
<td>var 1,0 bar</td>
</tr>
<tr>
<td>1 . 0</td>
</tr>
</table>
&#13;
答案 1 :(得分:0)
使用JQuery $.each()
和RegExp.prototype.test()
函数的解决方案:
$(document).ready(function(){
$('tr td').each(function(i, el){
if (/\b(1\.0|1,0)\b/g.test($(el).text())) {
$(el).closest('tr').hide();
}
});
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table border="1">
<tr><td>11.0</td></tr>
<tr><td>cars 1,020</td></tr>
<tr><td>1.0</td></tr>
<tr><td>cars 1,0</td></tr>
</table>
&#13;