从锚点提取javascript';s href使用jQuery或JavaScript

从锚点提取javascript';s href使用jQuery或JavaScript,javascript,jquery,dom,Javascript,Jquery,Dom,是否有人知道一种简单的方法,可以使用jQuery(或其他Javascript,如果需要)仅提取锚定标记的href属性(如下面的一个)的Javascript部分,以便在运行时将其分配给另一个事件 <a id="FancyLink" href="javascript:DoSomething('Input1')">Do</a> 我知道如何使用jQuery获取锚点的整个属性值,我想我可以这样做,然后手动删除“javascript:”前缀,但我想知道是否有更好的方法从上面的示

是否有人知道一种简单的方法,可以使用jQuery(或其他Javascript,如果需要)仅提取锚定标记的href属性(如下面的一个)的Javascript部分,以便在运行时将其分配给另一个事件

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

我知道如何使用jQuery获取锚点的整个属性值,我想我可以这样做,然后手动删除“javascript:”前缀,但我想知道是否有更好的方法从上面的示例中获取javascript函数对象

谢谢你的帮助

布莱恩像这样:

var code = $('#FancyLink').attr('href').replace(/^javascript:\s*/, '');
这将返回一个stringm,您需要对其进行
eval
才能执行。
为了获得更好的性能,您可以调用
eval
一次并创建一个函数,如下所示:

var executor = eval('[ function() { ' + code + ' } ]')[0];
数组是必需的,因为IE不能直接从
eval
返回函数


为了获得更好的性能,根本不要这样做。

假设您不能重构
代码,这就是这里的问题所在,您还可以将href分配给
位置,这大致就是用户单击链接时发生的情况。这样可以省去“javascript:”部分的麻烦,而且会更自然一些。

这看起来很棒!我会试试看,然后告诉你。非常感谢您的超快速响应。谢谢,但我需要这样做的原因是我无法控制href中的JavaScript。它是由其他软件生成的,我需要一种干净的解析方法。@BrianFinkel:注意,我假设了这一点,并建议使用href而不解析“javascript:”部分。抱歉,Nickolay,但我仍然不理解你的建议。你说我可以将href分配给“location”是什么意思“位置”不是href标记的属性,我不知道您指的是什么。您的回答如何帮助我尽可能清晰地提取href属性的JavaScript部分?@BrianFinkel:location=a.href。示例(复制/粘贴到Firefox位置栏):数据:text/html,函数onload(){location=document.getElementById(“link”).href}