Senden klicken Sie auf Ereignis zu übergeordneten Anker
Wie sende ich ein click-Ereignis (JS oder JQuery) zu einem übergeordneten Objekt, das ist ein Anker? Meine grundlegende HTML sieht wie folgt aus:
<a href="javascript:myFunc(1,2,3)">
<img id="btn1" src="myimg.png">
</a>
So kann ich einfach verweisen Sie die Anker über die Schaltfläche über:
document.getElementById('btn1').parentNode
Jedoch
document.getElementById('btn1').parentNode.click
während es scheint kein Fehler in der Konsole von firebug, der javascript-Funktion scheint nicht zu feuern entweder. Wie sende ich eine auf zu dieser Sache. Übrigens, ich habe keine Kontrolle über die HTML-ich kann also nicht einfach eine ad-ID für den Anker-tag.
- Ich aktualisiert meine Antwort um eine bewährte Lösung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorbei sind die Tage, wenn es okay ist, verwenden Sie die
href="javascript:blah"
, vor allem, wenn Sie mit einer Bibliothek, wie jQuery, Dojo, ExtJs oder der rest. Event-Handler sollte stets befestigt werden, außerhalb der HTML.Hier ist ein snippet, dass Sie testen können, auf SO Seiten (copy+paste in Firebug)
Normale Links mit Normalen HREF-s
Links mit Javascript-Befehle als HREF ist,
I Hinweis in Ihrem Fall aber, dass der HREF-Wert ist ein Aufruf einer javascript-Funktion mit Parameter. Für dieses, möchten Sie vielleicht zu bewerten, dass "HREF", anstatt auf den link klicken:
Habe ich baute ein test-Fall und verwendet firebug zu versuchen beide Methoden. Die ersten Erträge
1
, zeigt der link geklickt wurde, aber der Code nie ausgeführt wird. Die zweite Methode tatsächlich ausgeführt wird das javascript im HREF-Wert des Links selbst. Dies sollte eine angemessene Lösung für Ihren speziellen Bedarf.EDIT: ignorieren Sie diese Antwort, denn es ist nicht gut für die links; siehe die Kommentare unten.
Den
click
Eigenschaft einesa
element ist eine Funktion, Eigenschaft, auch bekannt als die Methode, alles, was Sie tun, ist die Referenzierung der Eigenschaft, nicht die Berufung auf Sie.(Hinweis: die
()
zu verursachen, die Methode, die aufgerufen werden soll) sollte es tun, aber wenn Sie mit jQuery bereits dann Jonathan Sampson Antwort wird tun, was Sie brauchen - es gibt keinen Punkt beim laden der Bibliothek und dann nicht verwenden 🙂Obwohl Jonathan ' s Antwort kann gekürzt werden, da jQuery bietet eine
auf
Methode:click
Eigenschaft einesa
element ist auch ein IE-proprietäre Funktion. Es ist nur einheitlich für<input />
Elemente vom Typ"button"
,"checkbox"
,"radio"
,"reset"
oder"submit"
: w3.org/TR/2000/WD-DOM-Level-1-20000929/...elem["on"+type].apply( elem, data )
für Klicks auf links, die ruft einen event handler auf, aber wird nicht ausgelöst, die browser-nativen link-Aktion, glaube ich.click
Methode ruft einfach nurtrigger
.click()
Methode der<a>
Elemente, weil dieclick()
Methode der<a>
Elemente unzuverlässig ist 😉 Siehe stackoverflow.com/questions/1421584/...jQuery Weise vielleicht ja so:
oder in deinen Worten so etwas wie dieses