2009-12-02 61 views
5

使用jquery,我想從A標籤的onClick屬性獲取javascript。jquery attr(「onClick」) - ie和ff

<a href='#' onClick='alert("boo");' /> 

在Firefox:alert($('a').attr("onClick"))顯示:alert("boo")

在IE 6/7:alert($('a').attr("onClick"))顯示:function anonymous(){alert("boo");return false;}

我怎麼能只檢索的JavaScript,而不是包裝的函數,在IE 6/7使用jQuery? (或純JavaScript)?

弗蘭科

+0

只是好奇,爲什麼你特別需要檢索'alert(「boo」)'在這個例子中?你是從另一個地方撥打它還是隻是在探索?如果您試圖通過其他原因檢索該值,則可能會有不同的處理方式。 – JamesEggers 2009-12-02 16:21:48

+0

只是在此刻探索 - 想知道爲什麼我不能得到文本/爲什麼函數返回ie6/7。 ie8表現得像火狐... – 2009-12-02 16:36:11

+0

@frankie boyle好的。我現在對自己很好奇,但是如果你不僅僅是在探索,而是想確保沒有別的辦法。謝謝。 – JamesEggers 2009-12-02 16:37:58

回答

4

我怎麼能只檢索的JavaScript,而不是包裝的函數,在IE 6/7

您通常不希望依賴於在所有內嵌事件處理字符串值(以事實上,您通常應該避免使用內聯事件處理程序屬性,以便從腳本中綁定到函數 - 特別是如果您使用的是jQuery,則此方法是常規)。但是,如果必須,解決方法是DOM方法getAttributeNode

var link= $('a')[0]; // or whatever 
alert(link.getAttributeNode('onclick').value); 
+0

完全同意內聯事件處理程序的字符串是錯誤的 - 我只是在玩遊戲,並發現IE瀏覽器爲什麼表現不同......謝謝! – 2009-12-02 17:15:46

+0

但是接下來有一些ASP.NET WebForms默認生成了一堆DOM 0 onclick事件處理程序 - 我很高興找到這個答案,因爲我需要把它們弄糟......好吧,使用它們;-) – Oliver 2011-03-19 19:14:59

0

你試過:

alert($('a').attr("onclick")) 

在XHTML的onClick是不正確的版本。

+0

由於IE不理解XHTML(它將HTML看作格式不正確),這不太可能。 – NickFitz 2009-12-02 16:22:31

+0

使用小寫字母我得到: function onclick(){alert(「boo」);} - 同樣的問題 – 2009-12-02 16:25:35

2

的Internet Explorer 8 <具有完全破裂的setAttribute實施和其中的getAttribute處理的財產與給定的名稱,而不是屬性的。

我不知道工作。

+1

要展開此操作:名稱爲'onclick'的錨標記的屬性的值是'alert ()'call;與該標籤對應的DOM節點的屬性值是匿名函數。 – 2009-12-02 17:00:56

2
比增加 的onclick更好

屬性爲代表IE6/IE7的這個解決方案:

$("a").click(function() { .. anything to do .. }) 
0

安全瀏覽器:

jQuery('a')[0].getAttribute('onclick');