wake-up-neo.com

holen Sie sich den Wert von "onclick" mit jQuery?

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?

28
Mike Trpcic

ich habe das noch nie gemacht, aber es wäre so:

var script = $('#google').attr("onclick")
44
mkoryak

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: 

  1. Fügen Sie einem bestimmten Ereignis mehr als einen Ereignishandler hinzu
  2. einige Zuhörer selektiv entfernen

Anstatt addEventListener() tatsächlich zu verwenden, können Sie jQuery-Wrapper wie $('selector').click() verwenden.

Prost wieder!

13
jrharshath

Das funktioniert für mich

 var link_click = $('#google').get(0).attributes.onclick.nodeValue;
 console.log(link_click);
12
hexdump
$('#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.

11
Alex Gyoshev

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.

4
Mottie

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 {
        // ...
    }
});
0