2017-03-02 32 views
0

我即将编辑一个插件,我有一个jQuery列表的问题,即过滤和隐藏表/ html的一些元素。在html表jquery完全匹配

$(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”。

我遇到的问题是,该代码还隐藏了“纸张11.00”和“汽车1,020”之类的行。 Anyrow包含任何形式的“1.0”“1,0”。

任何人都可以请帮我调整“过滤器”,以避免隐藏“11.00”或“1,020”?

+0

这个怎么样的正则表达式:'\ B1 [\,] 0 \ B' \ b会与字boundries – Nullman

+0

可以使用'.filter()'到滤波选择的元素。检查http://stackoverflow.com/a/40906817/5104748 – Mohammad

回答

0

使用.filter()td.text().match与正则表达式\b1[.,]0\b匹配1.01,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>

+0

谢谢你,以及@justinas工程就像它应该。一开始它表现得非常缓慢,但现在它的运行如同疯狂。 你有什么想法,为什么它在一开始表现如此糟糕? – LionKing

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(); 
 
     } 
 
    }); 
 
});
<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>

+0

谢谢RomanPerekhrest的解决方案。你的代码就像一个魅力,速度非常快。 只是一个问题:它只“隐藏”其中的单元格,它找到1,0等我需要它来隐藏整行,就像它适用于td:contains。我想念什么? – LionKing

+0

@LionKing,增加了获得父'tr'(行)。现在它工作正常 – RomanPerekhrest