如何隐藏包含某些值的TD的表行

时间:2015-05-29 10:35:09

标签: javascript jquery html css

我正在使用SharePoint网站,我需要使用CSS(首选)或JavaScript来隐藏包含两个主要TD的表格行: -

  1. 道明的TD,文字名为Item Number。
  2. TD,输入标题为项目编号。
  3. 以下是标记的构建方式: -

    enter image description here

    有人可以就此提出建议吗?

    我尝试了以下脚本,但没有隐藏项目编号或客户首字母,请记住所有TR都在一个具有.ms-formtable类的表中: -

        <script>
    $(function() {
    
      $('.ms-formtable tr').each(function() {
        var frstVal = $(this).find('td').eq(0).text();
        if (frstVal.match(/Item Number|customer Initials/i)) {
          $(frstVal).remove()
        }
      });
    
    });
    
        </script>
    

    这是相关的标记: -

    <table width="100%" class="ms-formtable" style="margin-top: 8px;" border="0" cellspacing="0" cellpadding="0">
    <tbody>
    <tr>
    <td width="113" class="ms-formlabel" nowrap="true" valign="top">
    <h3 class="ms-standardheader">
    
    <nobr>Item Number</nobr>
    
    </h3></td>
    
    
    <td width="350" class="ms-formbody" valign="top">
    
    <span dir="none"><input title="Item Number" class="ms-long ms-spellcheck-true" id="_x0049_D1_806a702b-1716-47f5-a93c-16067f502daf_$TextField" type="text" maxlength="255" value=""><br></span>
    
    <span class="ms-metadata">Do not customize at the list level</span>
    
    
    </td></tr>
    

    修改

    现在我尝试了这个脚本: -

    <script>
    $(function () {
    
        $('.ms-formtable table').each(function () {
            $(this).find('tr').each(function () {
                       $(this).find('td').text() = 'Item Number';
                    $(this).remove();
                }
            });
    
        });
    
    
    </script>
    

    但没有隐藏项目编号字段......

2 个答案:

答案 0 :(得分:0)

您的脚本和HTML存在一些问题。

在你的html中,td's中没有任何文字,你有以下查询:

var frstVal = $(this).find('td').eq(0).text(); // how is this query going to retrive anything at all ? 

您的脚本存在的问题是您正在迭代所有tr's,但您只缓存每个td内第一个tr的text(),因此请更改脚本如下:

$(function() {

  $('.ms-formtable tr').each(function() {
    $(this).find('td').each(function(){
        var str_text = $(this).text();
        if (str_text.match(/Item Number|customer Initials/i)) {
          $(this).text(' ');
        } 
    });

  });
});

<强> FIDDLE HERE

修改

您选择了错误的元素,以下查询错误:

var str_text = $(this).text();

$(this)指向tr,您需要进入tr并找到nobr,然后执行您的操作。

$('.ms-formtable table').each(function () {
    $(this).find('tr').each(function () {
               var str_text = $(this).find('td nobr').text();
               // console.log(str_text);
               if (str_text.match(/Item Number/i)) {
                 $(this).find('input').remove(); // add this to remove input
                 $(this).text(' ');
               } 
        }
    });

});

答案 1 :(得分:0)

希望这就是你要找的东西。

&#13;
&#13;
$('tr').each(function(){
  var count=0;
$(this).find('td').each(function(){
if($(this).text()=='Item Number'){count=count+1;}
if($(this).find('input[title="Item Number"]')){count=count+1;}
});
if(count==2){$(this).hide();}

});
&#13;
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.2.3/jquery.min.js"></script>
</head>
<body>
<table width="100%" class="ms-formtable" style="margin-top: 8px;" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td width="113" class="ms-formlabel" nowrap="true" valign="top">
<h3 class="ms-standardheader">

<nobr>Item Number</nobr>

</h3></td>


<td width="350" class="ms-formbody" valign="top">

<span dir="none"><input title="Item Number" class="ms-long ms-spellcheck-true" id="_x0049_D1_806a702b-1716-47f5-a93c-16067f502daf_$TextField" type="text" maxlength="255" value=""><br></span>

<span class="ms-metadata">Do not customize at the list level</span>


</td>
  </tr>
  </table>
</body>
</html>
&#13;
&#13;
&#13;

代码段输出将是一个空白页面,因为示例表中只有一行有2 td&#39;如上所述,所以隐藏了该行,基于creteria。