2009-12-02 23 views
5

Używając jquery, chciałbym uzyskać javascript z atrybutu onClick znacznika A.jquery attr ("onClick") - ie i ff

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

Firefox: alert($('a').attr("onClick")) pokazuje: alert("boo")

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

Jak mogę odzyskać tylko JavaScript, a nie funkcja zapakowane, w IE 6/7 przy użyciu jquery? (lub zwykły javascript)?

Franko

+0

prostu ciekawi, dlaczego konkretnie trzeba pobrać "alert (" boo ")" w tym przykładzie? Czy dzwonisz z innego miejsca lub po prostu odkrywasz w tej chwili? Jeśli próbujesz odzyskać wartość z innego powodu, może istnieć inny sposób jej obsługi. – JamesEggers

+0

po prostu odkrywania w tej chwili - zastanawiałem się, dlaczego nie mogę uzyskać tekst/dlaczego funkcja jest zwracana w ie6/7. ie8 zachowuje się jak firefox ... –

+0

@frankie boyle Ok. Ciekawi mnie teraz to, ale chciałem się upewnić, że nie było innego podejścia, gdybyś nie tylko odkrywał. Dzięki. – JamesEggers

Odpowiedz

4

Jak mogę odzyskać tylko JavaScript, a nie funkcja zapakowane, w IE 6/7

Zazwyczaj nie chcą polegać na wartości ciągów inline obsługi zdarzeń na wszystkich (w należy zasadniczo unikać stosowania atrybutów obsługi zdarzeń wbudowanych na rzecz wiązania funkcji ze skryptów - zwłaszcza jeśli używasz jQuery, gdzie to podejście jest normą). Ale jeśli musisz, obejście to jest metodą DOM getAttributeNode.

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

Całkowicie zgadzam się, że ciągi do obsługi zdarzeń inline są złe - po prostu miałem grę i nie mogłem zobaczyć, dlaczego IE zachowuje się inaczej ... Dziękuję! –

+0

Ale jest też WebForms ASP.NET, gdzie domyślnie generowane są pakiety zdarzeń DOM 0 onclick - z przyjemnością znalazłem tę odpowiedź, ponieważ musiałem z nimi zadzwonić ... cóż, wykorzystaj je ;-) – Oliver

0

Czy próbowałeś:

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

w XHTML onClick nie jest właściwa wersja.

+0

Ponieważ IE nie rozumie XHTML (widzi w nim zniekształcony HTML), to raczej nie jest to prawda. – NickFitz

+0

używając małej litery otrzymuję: funkcja onclick() {alert ("boo");} - to samo wydanie –

2

< Internet Explorer 8 ma całkowicie uszkodzony realizację setAttribute i getAttribute które dotyczą nieruchomościo podanej nazwie zamiast atrybutu.

Nie jestem świadomy żadnej pracy.

+1

Aby rozwinąć w tym: wartość atrybutu, którego nazwa to "onclick" znacznika zakotwiczenia to 'alert() 'call; wartość właściwości węzła DOM odpowiadającego temu znacznikowi to funkcja anonimowa. –

2

Lepsze niż dodawanie onclick atrybutem jest imieniu IE6/IE7 to rozwiązanie:

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

Przeglądarka bezpieczne:

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