【问题标题】:Replace a href with a js function call用 js 函数调用替换 href
【发布时间】:2012-04-25 07:18:47
【问题描述】:

我想用调用需要包含 url 的函数来替换 href 中的 url。

示例: 我有以下字符串:

<a href="www.google.com">Google</a>
some other text
<a href="www.wikipedia.org">Wikipedia</a>

我想取回这样的字符串:

<a href="javascript:anyFunction('www.google.com');">Google</a>
some other text
<a href="javascript:anyFunction('www.wikipedia.org')">Wikipedia</a>

我用 RegEx 测试了一些方法,但我对 RegEx 不太擅长。有人可以解决我的问题吗?

编辑: 对不起,我忘记写了。我正在构建一个应用程序应用程序。我不能使用 jQuery 或“文档”。我认为唯一的方法是正则表达式。

【问题讨论】:

  • 啊。所以你真正想要的不是像我们一直在做的那样对 html/css 有帮助。您正在寻找字符串替换!对吗?
  • 没错。抱歉我的描述不好。
  • 您使用什么语言的正则表达式? javascript? php?很抱歉有这么多问题,但这将有助于为您找到答案:)。
  • 我正在使用 JavaScript。我已将我当前的代码发布为对您解决我问题的方法的评论。

标签: javascript regex replace href appcelerator


【解决方案1】:

试试这个正则表达式:

/href="([^"]+)/g

这是其用法示例 (JsFiddle Demo)

var subject = '<a href="www.google.com">Google</a>some other text<a href="www.wikipedia.org">Wikipedia</a>';
var result = subject.replace(/href="([^"]+)/g, 'href="javascript:anyFunction(\'$1\')');

【讨论】:

    【解决方案2】:

    如果您提供您的 hrefs 唯一 ID,您可以这样做:

    var val = $("#myHref").attr("href");
    $("#myHref").attr("href", "javascript:anyFunction('"+val+"');");
    

    如果您想避免使用唯一 ID,那么您可以这样做(适用于所有 a):

    ​$("a").each(function() {
        var val = $(this).attr("href");
        $(this).attr("href", "javascript:anyFunction('"+val+"');");
    });​​​
    

    如果您想避免将其应用于所有 href,您可以将所有要更改的 href 赋予一个类,然后使用如下选择器:$(".hrefToModify")...

    【讨论】:

    • 我不能使用 jQuery 或类似的东西,因为这是在 appcelator 应用程序中。创建一个新元素也不起作用,因为我不能使用“文档”。
    • 啊,对不起。恐怕我帮不了你,我已经有一段时间没有玩 Appcelerator 了。
    【解决方案3】:

    新:

    如果您可以使用 javascript,那么您可以访问锚标记本身吗?如果是这样:

    anchor_element.href = "javascript:anyFunction('" + anchor_element.href + "')";
    

    旧:

    <a id="link1" href="www.google.com">Google</a>
    some other text
    <a id="link2" href="www.wikipedia.org">Wikipedia</a>
    
    <script>
    document.getElementById('link1').addEventListener('click', function(e) {
        alert('hello');
        e.preventDefault();
        return false;
    });
    </script>
    

    【讨论】:

    • 就像我在上面的评论中所说的,我不能使用文档:/
    • 有趣。你可以添加任何javascript代码吗?还是您只能通过 html 访问。一般来说,您可以访问哪些内容?
    • Javascript 可用。我添加了一个正则表达式来获取完整的 a-tag 作为字符串。但是我不擅长RegEx,我不知道如何替换href。这:pattern = /&lt;a href="(.*?)"&gt;/;matches = htmlString.match(pattern);alert(matches[0]); 返回&lt;a href="www.google.com"&gt;
    • 除了document.getElementById之外,还有其他方法可以在javascript中获取元素吗?我的javascript技能很弱:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 1970-01-01
    • 2011-03-11
    • 2016-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多