JQuery隐藏元素中的特定文本

时间:2017-01-25 12:20:15

标签: jquery text hide

问题

我需要阻止td元素中的特定字符串。但问题是,这个td元素还包含其他标记,因此我不能只删除此标记。

<td class="ms-list-addnew ms-textLarge ms-soften">
<a title="Saate sellesse loendisse või teeki lisada uue üksuse." class="ms-heroCommandLink" id="idHomePageNewItem" style="display: none;" onclick='NewItem2(event, "http://infoportaal2/_layouts/15/listform.aspx?PageType=8&amp;ListId=%7BF4433171%2D98D5%2D414B%2D914F%2DAFD9A44BF869%7D&amp;RootFolder="); return false;' href="http://infoportaal2/_layouts/15/listform.aspx?PageType=8&amp;ListId=%7BF4433171%2D98D5%2D414B%2D914F%2DAFD9A44BF869%7D&amp;RootFolder=" target="_self" data-viewctr="9">
<span class="ms-list-addnew-imgSpan16">
<img class="ms-list-addnew-img16" id="idHomePageNewItem-img" src="/_themes/42/spcommon-B35BB0A9.themedpng?ctag=44"></span>
<span>uus üksus</span>
</a> või selle loendi 
<a title="Saate seda loendit redigeerida kiirredigeerimisrežiimis." class="ms-heroCommandLink" onclick="EnsureScriptParams('inplview', 'InitGridFromView', '{32FA9EC5-6444-4ECC-9300-1D82D2AEB5F7}'); return false;" href="javascript:;">andmete sisestamine</a>
</td>

enter image description here

enter image description here

注意,我在此$("#idHomePageNewItem").hide();元素中的第一个<a>元素上使用了td

我尝试了什么

我试过使用以下内容:

$("td:contains('või selle loendi')").text().replace('või selle loendi', '');

$("span:contains('või selle loendi')").text().replace('või selle loendi', '');

$('div.text').text(function (i, t) {
    return t.replace('või selle loendi', '');
})

以及其他一些类似的变化。我已经设法删除了标签中的整个内容(这在我的情况下不起作用)并且发生了很多事情。

2 个答案:

答案 0 :(得分:0)

你尝试过indexOf吗?

if (td.html().indexOf("your string")>-1) {
  td.html(td.html().replace("your string",""));
}

答案 1 :(得分:0)

在DOM中,文本内容作为文本节点存在。这些是元素节点的后代。你的问题是jQuery没有很好地设置为操作文本节点:它实际上是基于元素。

在我看来,在原生DOM功能方面更容易处理这个问题:

$('.ms-list-addnew')
  .contents()
  .filter(function(idx, node) {
    return node.nodeType === Node.TEXT_NODE;
  })
  .each(function(idx, el) {
    el.nodeValue = el.nodeValue.replace('või selle loendi', '');
  });

请注意,这是ES6代码,您可能需要为旧浏览器进行转换。

也可以在jQuery中执行此操作:

<input type="button" value="Print in javascript" onclick="window.print();"/>

请注意,替换元素的整个HTML或文本内容是非常糟糕的主意。后者将摆脱所有其他元素并保留文本,而前者将摆脱所有现有的事件处理程序和与元素相关但不以HTML呈现的其他数据。