Javascript 找到一个字符,然后使用jQuery在其前面插入HTML标记

Javascript 找到一个字符,然后使用jQuery在其前面插入HTML标记,javascript,jquery,html,Javascript,Jquery,Html,我有一些使用此标记显示的文本,很遗憾,我无法更改这些文本 <a class="bt" href="#url">Leadership in Education (29 Oct - 31 Oct 2014)</a> 我想在前面加一个(这样日期就会显示在新行上) 我该怎么做呢 以下是我一直在尝试但不知道如何实现我想要实现的目标: jQuery选择DOM元素。一堆文本不是DOM元素,因此需要将其视为字符串,并使用string.replace(或regex)将BR插入所需位置

我有一些使用此标记显示的文本,很遗憾,我无法更改这些文本

<a class="bt" href="#url">Leadership in Education (29 Oct - 31 Oct 2014)</a>

我想在前面加一个

(这样日期就会显示在新行上)

我该怎么做呢

以下是我一直在尝试但不知道如何实现我想要实现的目标:


jQuery选择DOM元素。一堆文本不是DOM元素,因此需要将其视为字符串,并使用string.replace(或regex)将BR插入所需位置


您可以使用jQuery选择包装元素。其余的是字符串操作。

您不希望对页面上的每个
元素都执行此操作,因此我建议您在适当的地方为下面的代码添加一个选择器

下面的代码使用您的选择器,并将
替换为

)非常简单

$( "a:contains('(')" ).each(function() {
    jQuery(this).html( jQuery(this).html().replace('(', '<br>(') );
});
$(“a:包含(“(”)))。每个(函数(){
jQuery(this).html(jQuery(this).html().replace('(','
(')); });
您可以使用正则表达式将打开的paren替换为

)。请参阅fiddle:

快速简便(这适用于页面上的所有锚定,只要每个锚定只有一个圆括号…):

$(“a:contains(“(”)”).css(“文本装饰”、“下划线”)。每个(函数(){
$(this.html($(this.html()).replace(“(”,“
)(”); });
$(“a:contains(“(”)”)).html(函数(){
返回$(this.html().replace(“(”,“
)(”); });

为什么不先在html中这样做呢?谢谢@Mr.coder的建议!@tcooc我希望我可以:(但不能更改,因为它是固定的。我从来没有想过使用函数来返回
.html()
的内容。这太棒了。我一直在用丑陋的方式来做,比如
.html(.html())
一直以来都是这样。+1感谢意外提示!MasyaAllah,这是一个超级酷的答案。我知道我不必做正则表达式。哇,超级酷,真的!!!谢谢你的提示。你给了我理论,@j08691给了我答案。谢谢你的代码和提醒!我会在aI建议你使用@j08691的答案之前添加一个选择器(如果你还没有这样做的话)。它没有那么多余,但达到了相同的目标。我留下我的答案只是为了补充建议。
$( "a:contains('(')" ).css( "text-decoration", "underline" ).each(function(){
    $(this).html($(this).html().replace("(","<br/>("));
});
$("a:contains('(')").html(function () {
    return $(this).html().replace(" (", "<br />("); 
});