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

时间:2013-07-18 09:32:16

标签: javascript jquery regex string

假设以下标记:

    <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个字符。

2 个答案:

答案 0 :(得分:4)

jQuery对于操作文本节点并没有多大帮助,但这里是:

var tn = $('a[name="uniqueLink1"]')[0].nextSibling;
tn.nodeValue = tn.nodeValue.replace('[', '');

Demo


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

nextSibling,顾名思义,抓取下一个兄弟节点。在这种情况下,跟随给定锚元素的文本节点。

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

String.replace()给定一个字符串,因为第一个参数只替换第一个匹配项,因此,如果DOM结构与发布的结构类似,这应该足够了。

答案 1 :(得分:0)

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

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

Example fiddle