我有这样的HTML:
<div class=foo>
(<a href=forum.example.com>forum</a>)
<p>
Some html here....
</div>
我想在第一个之后插入另一个链接,如下所示:
<div class=foo>
(<a href=forum.example.com>forum</a>) <a href=blog.example.com>blog</a>
<p>
Some html here....
</div>
...但因为它包含在()
中我无法使用:
$('div.foo a:first').append(' <a href=blog.example.com>blog</a>');
...将它放在)
之前。
那么如何扩展我的jQuery选择以选择文字)
或者我是否需要使用其他解决方案?
答案 0 :(得分:2)
您可以匹配并替换整个(<a />)
字符串,也可以在整个事物周围放置另一个元素(例如跨度)。
<span>(<a href=forum.example.com>forum</a>)</span>
Append也在现有锚点中插入新的锚标记。您可能会发现您正在寻找after()
答案 1 :(得分:1)
您是否可以选择下一个<p>
代码并预先添加(实际上......使用before方法)链接?
$('div.foo a:first').next('<p>').before(' <a href=blog.example.com>blog</a>');
答案 2 :(得分:0)
永远不应该通过正则表达式修改XML / HTML(特别是不受信任/格式不正确),但如果你真的很绝望:
var container = $('div.foo');
var append = '<a href="...">...</a>';
var html = container.html();
var replaced = html.replace(/\(<a [^\)]+\)/, "$& " + append);
container.html(replaced);
请注意,如果a-tag中有“)”字符,则上述操作将失败。