从目录 (AD) 中读取的 HTML 中删除电子邮件签名中的行
Posted
技术标签:
【中文标题】从目录 (AD) 中读取的 HTML 中删除电子邮件签名中的行【英文标题】:Delete row in email signature from HTML being read from Directory (AD) 【发布时间】:2019-12-04 21:27:08 【问题描述】:我正在尝试通过 jquery 或 javascript 删除 html 中的一行。我正在从目录中读取,但如果一行中没有信息,我不希望它可见。假设我有两行,目录中的用户没有手机号码,如何为他们删除?
我真的尝试了很多东西,但我一定错过了一些东西。
<tr>
<td>email: %%email%%</td>
</tr>
<tr>
<td>mobile: %%MobileNumber%%</td>
</tr>
我假设该行将只为没有手机号码的用户删除。
【问题讨论】:
显示js。您可以通过 $.("table > tr > td:nth-of-type(2)").html(""); 访问 trs; 这不是一个有效的 html 结构。您的<tr>
和 <td>
关系颠倒了。由于浏览器实际处理它们的渲染方式,尝试在无效结构上使用 js 会产生不一致的结果
标题应该是对问题的简要总结,而不是完全不相关的故事-> Help Center - How do I ask a good question?
那么%%MobileNumber%%
是什么......我猜你用来吐出来的东西都不应该这样做......
@charliefl 那是我的错,我急着写。
【参考方案1】:
您需要将文本设置为变量,然后找到“:”之后的子字符串,它将返回 %%MobileNumber%%。
如果子字符串为空,那么我们隐藏它。
如您所见,第三个td
没有所需的文本,因此它被隐藏了。
$(function()
$('td').each(function()
var str = $(this).text();
var sub = str.substring(
str.indexOf(':', 1) + 1
);
if (sub == '')
// or .remove()
$(this).hide();
);
);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<table>
<tbody>
<tr>
<td>email: %%email%%</td>
</tr>
<tr>
<td>mobile: %%MobileNumber%%</td>
</tr>
<tr>
<td>mobile:</td>
</tr>
</tbody>
</table>
如果您只希望它用于包含“mobile:”的 td:
// find if a td starts with "mobile:" and if the substring after is empty
if ( str.match("^mobile:") && sub == '' )
$(this).hide();
【讨论】:
嘿!我只是尝试了这个,但没有运气,感谢您的尝试,不知道是什么问题。 真的吗?您插入 td 的数据到底是什么? 我们正在使用“%%MobileNumber%%”术语从 Azure 目录收集信息并将其显示在 td.我们正在处理名字、姓氏等,如果用户没有手机号码,则不会显示“m:”行。 当您尝试此操作时,您将代码放在哪里,在加载文本 (%%MobileNumber%%) 之前还是之后? 我把它放在前后,但遗憾的是没有为我工作。只是好奇,它对你有用吗?【参考方案2】:在要隐藏的行中添加一个id,将mobile:
放在<td>
之外,然后使用JQuery实现同样的效果
<tr id="hideIfNoData">
mobile:<td> %%MobileNumber%%</td>
</tr>
$('#hideIfNoData > tr td:empty').parent().hide()
【讨论】:
$(function() $('#hideIfNoData tr').each(function() var val = $(this).text().trim(); if(val == 'mobile:') $(this).remove(); ) ) 试试这样的 很遗憾,那个也没有运气 把 mobile: 放在<tr>
的直接子节点
以上是关于从目录 (AD) 中读取的 HTML 中删除电子邮件签名中的行的主要内容,如果未能解决你的问题,请参考以下文章