2011-11-03 33 views
0

这与我以前用jquery问过的问题有关。如果我在整个网页中有多个表格,如下所示。是否有可能在编辑之后找到名称:并将其替换为其他名称。这个名字将永远是不同的,取而代之的是“anon”。我一直在使用的建议示例是从我以前的问题完美的作品,但在那里我知道我的div的类和ID,如何与table元素中的内容做到这一点?jquery搜索并替换表中的文本

非常感谢

<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> 
+0

您可以将名称放在''或类似的行内块元素中。而且,如果有人禁用了他们的javascript,所有的名字仍然可见。但我不知道这是否有问题(甚至是相关的)。 – Avaq

回答

1

您可以使用正则表达式替换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')); 
}); 
+0

很好,非常感谢 – mjroodt

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'); 
}); 
+0

元素是动态生成的,所以我不能再添加:-( – mjroodt

0

怎么样通过表格的孩子循环和搜索字符串文本“编辑:”。我想不出手的代码,但喜欢的东西的:

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