0

我有一个带有 td class-formlabel 和 text (HP)Hello 的 html 表

  1. 为什么这不替换文本?

    $(this).text().replace('(HP)','');
    
  2. this如果是,为什么这会删除格式$("td.ms-formlabel").each(function(){

    $(this).text("hello");
    
  3. 给定上面呈现的 html 和下面的代码,如何隐藏匹配的 TR 行?(注意我需要使用下面的条件和循环)

    $("td.ms-formlabel").each(function(){
    
    if($(this).text().match('(HP)')){
       // what code here to hide the entire TR row ?
    }
    

谢谢。

4

3 回答 3

1

有几件事:

  • 你应该使用:contains
  • 文本将去除格式,您应该使用.html()
  • 要指定 HTML(或相关的文本),请将新内容放在括号内,即element.text(content)

所以这里有一个例子......

$("td.ms-formlabel:contains('(HP')").each(function(){
    var $this = $(this);
    $this.html($this.html().replace('(HP)',''));
    $this.closest('tr').hide();
}

我想这就是你想要的。我唯一可能错的是你想隐藏哪一行......你的措辞有点令人困惑......

于 2009-12-10T15:47:07.500 回答
1
  1. $(this).text().replace('(HP)','');确实替换了文本,但你不做任何事情 - 试试:

    var text = $(this).text().replace('(HP)','');
    $(this).text(text);
    
  2. 它不应该被删除和格式化,除非你用里面的标签来应用它.ms-formlabel

    <td class="ms-formlabel"><b>Bold</b></td>
    

    会变成

    <td class="ms-formlabel">Hello</td>
    
  3. 您可以使用:

    $(this).closest('tr').hide();
    
于 2009-12-10T15:44:18.137 回答
1
  1. .text()返回一个字符串。要修改和替换文本,您必须重新设置它。x + 5这有点等同于不改变的事实x。您必须输入x = x + 5在这种情况下,代码将是这样的:

    $(this).text($(this).text().replace('(HP)',''));
    
  2. 我不太明白这个问题。如果您尝试设置一些 HTML 样式,请改用该.html()函数。

  3. 尝试这个:

    if ($(this).text().match('(HP)')) {
        $(this).closest('tr').hide();
    }
    
于 2009-12-10T15:46:41.243 回答