2

我正在尝试<span>使用 jQuery 将文本包装在内部标签中。下面的代码不起作用。请指出我哪里出错了。还请提出更好/不同的方法。

var mysearch = '(05/13/2012-11/13/2012)';
$('table:eq(0) tr:eq(1) th:contains("' + mysearch + '")').filter(function () {
    return this.html().replace('(05/13/2012-11/13/2012)', '<span class = "red"> (05/13/2012-11/13/2012)</span>');
});

jsFiddle 上的演示

4

2 回答 2

5

this在你的代码中是一个没有方法的DOM元素对象,html你也不需要filter方法,你可以使用html方法。

$('table:eq(0) tr:eq(1) th:contains("' + mysearch + '")').html(function(_, html) {
    return html.replace('(05/13/2012-11/13/2012)', '<span class="red"> (05/13/2012-11/13/2012)</span>');
});

如果 的内容th等于mysearch字符串,也可以使用wrapInner方法:

$('table:eq(0) tr:eq(1) th').filter(function(){
    return $.trim($(this).text()) === mysearch;
}).wrapInner('<span class="red"></span>');

JS小提琴

于 2013-05-14T17:57:08.043 回答
1

尝试这个 -

$('table:eq(0) th:contains("' + mysearch + '")').contents().wrapAll('<span class = "red"></span>');

工作演示--> http://jsfiddle.net/8kMqW/2/

于 2013-05-14T17:56:40.617 回答