Jquery搜索并替换表中的文本

时间:2011-11-03 14:30:17

标签: javascript jquery html

这与我向Jquery提出的上一个问题有关。如果我在整个网页中有多个表格,如下所示。是否可以在编辑后找到名称:并将其替换为其他内容。名称将始终不同,并替换为“anon”。我一直在使用的建议示例来自我之前的问题,但是在那里我知道我的div的类和ID,我将如何处理表元素中的内容?

非常感谢

<script type="text/javascript">
$(document).ready(function() {
    $('div.blogEntries div.entry span').remove();

    $('.entryFooter').each(function() { 
        var html_arr = $(this).html().split(' '); 
       html_arr[2] = 'anonymous'; 
       $(this).html(html_arr.join(' ')); 
    });
});
</script>

<table border="0">
    <tbody style="border-radius: 8px 8px 8px 8px;">
    <tr>
        <td>
            An example post
            <br>
            Edited by: joe at 03/11/2011 14:09
            <br>
            <br>
        </td>
    </tr>
    </tbody>
</table>

4 个答案:

答案 0 :(得分:2)

您可以使用正则表达式替换html:

var replacementRegexp = /(.*Edited by:\s+)(.+)(\s+at.*)/m;

$("table td:contains('Edited by')").each(

function(index, element) {
    $(element).html($(element).html().replace(replacementRegexp, '$1anon$3'));
});

答案 1 :(得分:1)

我认为你想要一个正则表达式。这是Yuriy答案的替代方案:

var regex = /Edited by: ([\w]*)? at/g;
var tables = document.getElementsByTagName("table");

for (var i=0; i<tables.length; i++){
    var str = tables[i].innerHTML;
    console.log(str);
    str = str.replace(regex, "Edited by: anon at");
    tables[i].innerHTML = str;
}

答案 2 :(得分:0)

您需要更多HTML元素:

<span class="editedby">Edited by: <strong>joe</strong> at <em>03/11/2011 14:09<em><span>

$('span.editedby strong').each( function () {
    $(this).text('anon');
} );

答案 3 :(得分:0)

如何循环遍历表的子项并在文本中搜索字符串“Edited by:”。我不能想到手的代码,但是像:

$("#yourTableBody").children().each(function(){
      if( $(this).text().search("Edited by") > -1 )
        {
             //edit the string here
        }
});