Ist es möglich, den aktuellen Wert des Attributs onClick eines A-Tags über jQuery abzurufen?
Zum Beispiel habe ich:
<a href="http://www.google.com" id="google" onclick="alert('hello')">Click</a>
Ich möchte den Onclick-Code erhalten, damit ich ihn für eine spätere Verwendung speichern kann (da ich das Onclick-Ereignis für eine Weile ändern werde).
Ist es möglich etwas zu tun:
var link_click = $("#google").onclick;
oder:
var link_click = $("#google").click;
Damit ich später in meinem Code diesen Code erneut anwenden kann, oder eval () ihn ggf. wieder verwenden kann?
ich habe das noch nie gemacht, aber es wäre so:
var script = $('#google').attr("onclick")
mkoryak
ist richtig.
Wenn Ereignisse jedoch mit moderneren Methoden an diesen DOM-Knoten gebunden sind (nicht onclick
), schlägt diese Methode fehl.
Wenn Sie das wirklich wollen, lesen Sie diese Frage und ihre akzeptierte Antwort.
Prost!
Ich habe deine Frage noch einmal gelesen.
Ich möchte Ihnen folgendes sagen: Verwenden Sie onclick
, onkeypress
und keine Likes, um Ereignisse zu binden.
Durch die Verwendung besserer Methoden wie addEventListener()
können Sie:
Anstatt addEventListener()
tatsächlich zu verwenden, können Sie jQuery
-Wrapper wie $('selector').click()
verwenden.
Prost wieder!
Das funktioniert für mich
var link_click = $('#google').get(0).attributes.onclick.nodeValue;
console.log(link_click);
$('#google').attr('onclick') + ""
Firebug zeigt jedoch, dass dies eine Funktion 'onclick' zurückgibt. Sie können die Funktion später mit folgendem Ansatz aufrufen:
(new Function ($('#google').attr('onclick') + ';onclick();'))()
... oder verwenden Sie ein RegEx, um die function
zu entfernen und nur die darin enthaltenen Anweisungen abzurufen.
Ich bin mir nicht ganz sicher, wie man das in jQuery macht ... aber das funktioniert:
var x = document.getElementById('google').attributes;
for (var i in x) {
if (x[i].name == "onclick") alert(x[i].firstChild.data);
}
aber wie Harshath sagte, wäre es besser, wenn Sie Ereignis-Listener verwenden würden, da das Entfernen und Hinzufügen dieser Funktion in das Onclick-Ereignis mühsam sein kann.
Könnten Sie erklären, was genau Sie erreichen wollen? Im Allgemeinen müssen Sie NIEMALS das Onclick-Attribut von HTML-Elementen abrufen. Sie sollten auch nicht den Onclick auf das Element selbst angeben. Setzen Sie den Onclick stattdessen dynamisch mit JQuery.
Soweit ich Sie verstehe, versuchen Sie, zwischen zwei verschiedenen Onclick-Funktionen zu wechseln. Besser ist es, Ihre Onclick-Funktion so zu implementieren, dass beide Situationen bewältigt werden können.
$("#google").click(function() {
if (situation) {
// ...
} else {
// ...
}
});