更改和隐藏表格的各个部分

时间:2009-12-10 15:38:27

标签: jquery replace format hide

我有一个带有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 个答案:

答案 0 :(得分: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();
    

答案 1 :(得分: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();
    }
    

答案 2 :(得分: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();
}

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