假设以下标记:
<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个字符。
答案 0 :(得分: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结构与发布的结构类似,这应该足够了。
答案 1 :(得分:0)
这将过滤文本节点,并从第一个中删除[
:
var textNode = $('body').contents().filter(function() {
return this.nodeType == 3;
}).eq(1);
textNode.replaceWith(document.createTextNode(textNode[0].textContent.replace('[','')));