如何使用javascript替换来自jquery数据属性的链接的哈希标记

时间:2012-12-01 01:03:05

标签: jquery regex hashtag

我正在尝试像在这个问题中那样做 Change #hash tag to link on page load 但我认为因为我从jquery对象获取字符串data-caption属性有些东西无法正常工作。我有像这样的DOM元素

<a class="thumbnail" rel="gallery" data-caption="#drink from somewhere #fun" data-pid="36" href="http://domain.com/something"><img src="http://domain.com/somephoto.png" alt="acee7bd0d8339b9ddcf4a259ec7ddeec"></a>

它基本上是一个加载到模态中的缩略图然后我试图获取属性标题并从任何哈希标记创建链接

 var caption = anchor.attr('data-caption') ? anchor.attr('data-caption') : null;
 console.log(caption);

其中变量锚是代表链接的jquery对象

我可以看到有一个标题,如果我检查它打印的日志“#drink from somewhere #fun”

所以现在把它扔进一个正则表达式替换fn

caption.replace(/#(\S*)/g,'<a href="http://twitter.com/#!/search/$1">$1</a>');

然后将标题附加到DOM并激活链接。

但是字幕字符串没有任何反应我只是得到了我输入的相同的东西。

**编辑答案 愚蠢的错误忘了将返回值赋给变量

var captionLinks = caption.replace(/#(\S*)/g,'<a href="http://twitter.com/#!/search/$1">$1</a>');

2 个答案:

答案 0 :(得分:12)

如果您的问题中的代码与您使用时完全一致,则需要指定caption.replace()的结果。只需致电.replace(),就不会改变caption

假设您正在做的就是:

caption.replace(/#(\S*)/g,'<a href="http://twitter.com/#!/search/$1">$1</a>');

尝试使用它:

caption = caption.replace(/#(\S*)/g,'<a href="http://twitter.com/#!/search/$1">$1</a>');

根据Replace的{​​{3}}:

  

返回一个新的字符串,其中一些或所有匹配的模式被替换为   一个替代品。模式可以是字符串或RegExp,以及   replacement可以是每个匹配要调用的字符串或函数。

当然,如果你已经这样做了,而你根本就没有发布,那么问题就是其他问题。

如果是这种情况,请告诉我,我会删除我的答案,因为它显然不适用。

答案 1 :(得分:0)

我会选择/#(\S+)/g来避免单一的#