我正在使用SharePoint网站,我需要使用CSS(首选)或JavaScript来隐藏包含两个主要TD的表格行: -
以下是标记的构建方式: -
有人可以就此提出建议吗?
我尝试了以下脚本,但没有隐藏项目编号或客户首字母,请记住所有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>
但没有隐藏项目编号字段......
答案 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)
希望这就是你要找的东西。
$('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;
代码段输出将是一个空白页面,因为示例表中只有一行有2 td&#39;如上所述,所以隐藏了该行,基于creteria。