0

我想用需要包含 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 或“文档”。我认为唯一的方法是正则表达式。

4

3 回答 3

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\')');
于 2012-04-12T22:22:05.280 回答
0

如果您提供您的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")...

于 2012-04-12T21:31:37.657 回答
0

新的:

如果您可以使用 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>
于 2012-04-12T21:33:52.033 回答