2010-10-28 84 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

相關問題