测试子项是否包含jQuery的特定文本

时间:2012-08-06 07:22:28

标签: jquery html css filter

我必须过滤一个html表。为此,我为所有tr元素创建了每个回调,并测试其中一个tr-children是否包含某些特定模式。

$("#filter").keypress(function() {
    var filter = $(this).val();

    $("#table1 tr[data-config]").each(function(){

        var val = $(this).find(":contains('" + filter + "')");

        if(val.length > 0){
            $(this).css("display","table-row");
        }else{
            $(this).css("display","none");
        }
    });
});

它有效,但有一个函数来测试一个元素是否包含一些文本?

目前,我检索包含模式的所有元素的列表,如果它大于零则计数。是否有一个jQuery函数,它测试是否发生这种模式并返回一个布尔值?该表可以包含许多行,因此我希望尽可能少的开销。

3 个答案:

答案 0 :(得分:4)

///// replace these lines...
// var val = $(this).find(":contains('" + filter + "')");
// if(val.length > 0){

///// with this line
if($(this).text().match(filter)){

这可以通过将整行内容转换为文本字符串,然后使用简单的字符串比较函数来检查文本中是否包含过滤器(因此行)

答案 1 :(得分:0)

当过滤器区分大小写时,这就是如何使其不敏感:

$home_timeline = $twitteroauth->get('statuses/user_timeline', array('count' => 4));  

echo "<pre>";
print_r($home_timeline->id_str);
echo "</pre>";

道具到Billy

答案 2 :(得分:0)

答案很好,但使用的方法更简单:contains

一般来说,这样做:

$(".class:contains('texttofind')").css("display", "none");

通过上面的具体示例,执行以下操作:

$("#table1 tr[data-config]:contains('" + filter + "')").css("display","table-row");

您可以在此处找到更多信息:https://api.jquery.com/contains-selector/

这样可以避免使用.each.find循环播放。