7

我正在有效地尝试在这个问题中做同样的事情 Change #hash tag to link on page load 但我认为因为我从 jquery 对象数据标题属性中获取字符串,所以某些东西无法正常工作。我有一个这样的 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);

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

如果我检查它打印的日志,我可以看到有一个标题“#drink from某个地方#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>');
4

2 回答 2

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

返回一个新字符串,其中模式的部分或全部匹配被替换替换。模式可以是字符串或正则表达式,替换可以是字符串或每次匹配调用的函数。

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

让我知道是否是这种情况,我将删除我的答案,因为它显然不适用。

于 2012-12-01T01:09:39.683 回答
1

我会/#(\S+)/g尽量避免单#

于 2014-08-13T20:57:24.263 回答