jQuery:在字符串中查找包含文本的标签

时间:2012-12-30 15:58:41

标签: jquery regex search filter

我有一个变量,它存储包含一些内容的表行。我想使用%% LIKE %%方法搜索该字符串以查找特定术语,如果找到,则将此html行添加到仅包含已过滤行的新变量中。 如果可能的话,我希望搜索不区分大小写。

到目前为止,我有以下内容,似乎不起作用:

// current list
var thisBlock = '<tr><td>Some content</td></tr><tr><td>Some other content</td></tr><tr><td>Even more content</td></tr>';

// new list
var thisList;

// phrase to be found
var thisValue = 'Some';

// filter
var thisItems = $(thisBlock).find("tr:contains('" + thisValue + "')");

// loop to append the found rows
if (thisItems !== '' && typeof thisItems !== 'undefined') {
    $.each(thisItems, function() {
        thisList += $(this).clone().wrap('<div>').parent().html();
    });
}

问题似乎与过滤器部分有关,我无法弄清楚如何以其他方式进行。

1 个答案:

答案 0 :(得分:1)

试试这个:

var thisItems = $('<table>'+thisBlock+'</table>').find("tr:contains('" + thisValue + "')");

如果没有包装表标签,我认为jQuery不会将其视为有效标签,因为它没有根节点。

更新:以下代码正在努力将每个匹配的行添加到表#outTab中,您可以使用它来到达您想要的位置吗?

<table id="outTab"/>

<script type="text/javascript">
// current list
var thisBlock = '<table><tr><td>Some content</td></tr><tr><td>Some other content</td></tr><tr><td>Even more content</td></tr></table>';

// new list
var thisList;

// phrase to be found
var thisValue = 'Some';

// filter
var thisItems = $(thisBlock).find("tr:contains('" + thisValue + "')");

// loop to append the found rows
if (thisItems !== '' && typeof thisItems !== 'undefined') {
    $.each(thisItems, function(){
        console.log( this );
        $('#outTab').append(this);
    });
    console.log(thisItems);
}
</script>