0

我有一个变量,它存储带有一些内容的表行。我想使用 %%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();
    });
}

问题似乎出在过滤器部分,我无法弄清楚如何以其他方式做到这一点。

4

1 回答 1

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>
于 2012-12-30T16:04:41.763 回答