【问题标题】:How do I use javascript to replace hash tags with links from a jquery data-attribute如何使用 javascript 将哈希标签替换为来自 jquery 数据属性的链接
【发布时间】:2012-11-19 06:30:06
【问题描述】:

我正在有效地尝试做与这个问题相同的事情 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>');

【问题讨论】:

  • 只是仔细检查,你在做caption = caption.replace(...),而不仅仅是caption.replace(...)

标签: jquery regex hashtag


【解决方案1】:

如果您问题中的代码完全按照您使用的方式发布,您需要分配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>');

根据documentationReplace

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

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

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

【讨论】:

  • 就是这样,愚蠢的错误。谢谢。
【解决方案2】:

我会选择/#(\S+)/g 来避免使用单个#

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-28
    • 1970-01-01
    • 1970-01-01
    • 2011-12-10
    • 2012-11-11
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    相关资源
    最近更新 更多