-1

假设以下标记:

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

无论如何使用jQuery从顶行而不是底行删除'['?

注意:我无权访问标记,但divs如果我愿意,我可以使用 jQuery 添加元素等。但是 jQuery 不需要string特别针对 ']' - 它可以是“删除uniqueLink1.

4

2 回答 2

4

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 结构与发布的结构相似。

于 2013-07-18T09:40:18.830 回答
0

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

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

示例小提琴

于 2013-07-18T09:42:44.033 回答