2010-03-23 38 views
0

后,我有HTML像这样:如何添加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选择来选择文字)还是需要使用其他解决方案?

回答

2

您可以匹配和替换整个(<a />)串,或将其他元素(如跨度)周围的整个事情。

<span>(<a href=forum.example.com>forum</a>)</span> 

追加也将新的锚标记插入现有的锚内。你可能会发现你正在寻找after()

+0

正确的关于'after()' – user191688 2010-03-23 18:38:28

1

你可能会选择下一个<p>标记和预先(实际上...使用before方法)的链接?

$('div.foo a:first').next('<p>').before(' <a href=blog.example.com>blog</a>'); 
0

一个人决不应该修改正则表达式XML/HTML(尤其是不可信/ illformatted),但如果你真的绝望:

var container = $('div.foo'); 
var append = '<a href="...">...</a>'; 
var html = container.html(); 
var replaced = html.replace(/\(<a [^\)]+\)/, "$& " + append); 
container.html(replaced); 

注意上面如果你在标签中有“)”字符将会失败。

相关问题