删除下一个字符jQuery(没有给出html元素)

Remove next character jQuery (no html elements given)

本文关键字:html 元素 下一个 字符 jQuery 删除      更新时间:2023-09-26

假设以下标记:

    <body>
      <a href=# name="uniqueLink1">link</a> [ some text here
      <a href=# name="uniqueLink2">link</a> [ some more text here
    </body>

是否可以使用jQuery从最上面的一行中删除"[",但不删除最下面的一行?

注意:我没有访问标记的权限,但如果我想的话,我可以使用jQuery添加元素、divs等。但jQuery不需要特别针对']'的string-它可以是类似于"删除uniqueLink1之后的下3个字符。

jQuery在操作文本节点方面并没有太大帮助,但它是:
var tn = $('a[name="uniqueLink1"]')[0].nextSibling;
tn.nodeValue = tn.nodeValue.replace('[', '');

演示


$()[n]$().get(n)的简写,因此[0]将返回对jQuery对象中第一个匹配的DOM元素uniqueLink1锚的引用。

顾名思义,nextSibling获取下一个同级节点。在这种情况下,位于给定锚点元素之后的文本节点。

nodeValue获取并设置文本节点的内容。

给定一个字符串作为第一个参数的String.replace()只替换第一次出现的内容,因此,如果DOM结构与发布的结构相似,这就足够了。

这将过滤文本节点,并从它找到的第一个节点中删除[

var textNode = $('body').contents().filter(function() {
    return this.nodeType == 3;
}).eq(1);
textNode.replaceWith(document.createTextNode(textNode[0].textContent.replace('[','')));

小提琴示例