用js函数调用替换href

时间:2012-04-12 21:28:28

标签: javascript regex replace href appcelerator

我想用一个需要包含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并不擅长。有没有人能解决我的问题?

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

3 个答案:

答案 0 :(得分: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\')');

答案 1 :(得分:0)

如果您提供hrefs唯一ID,则可以执行以下操作:

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

如果你想避免使用唯一身份证,那么你可以这样做(适用于所有人):

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

如果你想避免将它应用于所有的href,你可以给你想要改变一个类的所有href,然后使用这样的选择器:$(".hrefToModify")...

答案 2 :(得分:0)

NEW:

如果您可以使用javascript,那么您是否可以访问锚标记本身?如果是的话:

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

OLD:

<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>