2010-10-28 63 views
1

有谁知道简单的方法来使用jQuery(或其他Javascript,如果有必要)只提取锚点标记的href属性的Javascript部分(如下所示)它可以在运行时分配给另一个事件吗?使用jQuery或JavaScript从锚点的href中提取javascript

<a id="FancyLink" href="javascript:DoSomething('Input1')">Do</a> 

我知道如何使用jQuery获得锚的整体属性值,我想我可以做到这一点,然后砍掉“的javascript:”手动前缀,但我不知道是否有更好的从上面的例子中获取JavaScript函数对象的方法。

感谢您的帮助!

布赖恩

回答

2

像这样:

var code = $('#FancyLink').attr('href').replace(/^javascript:\s*/, ''); 

这将返回一个STRING米,你将需要eval才能执行。
为了获得更好的性能,您可以拨打eval一次,并创建一个函数,就像这样:

var executor = eval('[ function() { ' + code + ' } ]')[0]; 

的阵列是必要的,因为IE不能直接从eval返回的功能。

为了获得更好的表现,请不要这样做。

+0

这看起来不错!我会尝试并让你知道。非常感谢超快速响应。 – BrianFinkel 2010-10-28 13:19:15

0

假设您无法重构<a href="javascript:...">代码(这是此处的问题),您也可以将href指定为location,这大概是用户单击链接时发生的情况。这将节省您砍掉'javascript:'部分,并且会更自然。

+0

谢谢,但我需要这样做的原因是我无法控制放置在href中的JavaScript。它由其他软件生成,我想要一个干净的解析方式。 – BrianFinkel 2010-11-01 16:19:09

+0

@BrianFinkel:请注意,我假设并提出了一种在不解析'javascript:'部分的情况下使用href的方法。 – Nickolay 2010-11-01 17:09:08

+0

对不起,尼克莱,但我仍然不明白你的建议。当你说我可以将href分配给'location'时,你是什么意思? 'location'不是href标签的属性,我不知道你指的是什么。您的答案如何帮助我尽可能干净地提取href属性的JavaScript部分? – BrianFinkel 2010-11-04 13:56:10

相关问题