问题
我需要阻止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&ListId=%7BF4433171%2D98D5%2D414B%2D914F%2DAFD9A44BF869%7D&RootFolder="); return false;' href="http://infoportaal2/_layouts/15/listform.aspx?PageType=8&ListId=%7BF4433171%2D98D5%2D414B%2D914F%2DAFD9A44BF869%7D&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>
注意,我在此$("#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', '');
})
以及其他一些类似的变化。我已经设法删除了标签中的整个内容(这在我的情况下不起作用)并且发生了很多事情。
答案 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呈现的其他数据。