2010-09-21 19 views
5

Ich muss Element in Funktion getClickedElement geklickt werden. Wie kann ich das machen?JavaScript: Get geklickt Element

<html> 
<head> 
    <script> 
    function getClickedElement() { 
    } 
    </script> 
</head> 
<body> 
    <a href="javascript:alert(getClickedElement())" id="test">click me!!!</a> 
</body> 
</html> 

Ich kann nur href Attribut festlegen. Ich kann onclick -Ereignis nicht festlegen, weil diese Elemente von Drittanbieter-Lib generiert wird.

Danke.

+0

Es klickten Element, wenn Sie würde helfen, zu erkennen, erzählt, warum du das brauchst, was du machen willst. Vielleicht gibt es andere Wege. – AlexanderMP

+0

Was ist die Third-Party-Bibliothek? –

Antwort

7

Sie können das angeklickte Element nicht in einer javascript: URL erhalten. Die Veranstaltung ist bereits beendet, also gibt es keine event.target (oder window.event.srcElement für IE) und javascript: Links werden nicht mit this gesetzt (so erhalten Sie window).

Natürlich, wenn Sie die Verbindung in Frage wissen ist id="test" Sie können document.getElementById('test') tun, aber ich vermute, dass eher fehlt den Punkt, was Sie tun wollen.

Ich kann nur href Attribut festlegen. Ich kann onclick-Ereignis nicht festlegen, da diese Elemente von Drittanbieter-Lib generiert werden.

Beheben oder löschen Sie die Lib. javascript: URLs sind absolute Schrecken, die nie verwendet werden sollten.

Können Sie eine <script> an anderer Stelle auf der Seite hinzufügen? Wenn dies der Fall ist, können Sie einen click Event-Handler auf das/die Element (e) injizieren, ohne dass ein zusätzliches Markup benötigt wird. zB .:

for (var i= document.links.length; i-->0;) 
    if (document.links[i] is one of the links you want to target) 
     document.links[i].onclick= someHandlerFunction; 

function someHandlerFunction() { 
    alert(this); 
    return false; 
} 

Tat von JS (mit on... oder über addEventListener mit attachEvent Rückfall für IE) Zuordnung ist der Best-Practice-Weg Event-Handler trotzdem hinzuzufügen.

+1

Obwohl diese Antwort hilfreich war, bin ich nicht sicher, was der Beantworter mit 'document.links [i] meint. ist einer der Links, auf die Sie zielen möchten. Wie würde jemand diesen Vergleich im eigentlichen Code schreiben?Warum hat der Autor dieser Antwort nicht einfach den eigentlichen Code geschrieben, anstatt willkürlich in Laiensprache zu springen? –

2

oder, wenn Sie die ID nicht vorhersagen können, können Sie Javascript verwenden, um Ereignisse anzuhängen, nachdem die Seite geladen wurde. Schau dir jQuery an. Verwenden Sie so etwas wie $('a').click(function() {return this.id; });

+0

Ich weiß Element ID nicht. Es wird von Drittanbieter-Lib generiert. Ich kann nur href-Wert festlegen. – Dumitru

+2

können Sie dann Javascript verwenden, um Ereignisse anzuhängen, nachdem die Seite geladen wurde. Schau dir jQuery an. Verwende etwas wie '$ ('a'). Click (function() {return this.id;});' – AlexanderMP

0

Sie können dies als Parameter übergeben und Sie können dann wissen, was das Element ist, das Sie suchen. zum Beispiel:

<html> 
<head> 
    <script> 
    function getClickedElement ($this) { 

    } 
    </script> 
</head>enter code here 
<body> 
    <a href="javascript:alert(getClickedElement(this))" id="test">click me!!!</a> 
</body> 
</html> 

hoffen, dass es Ihnen helfen, es hat mir geholfen :)

5

folgende statckoverflow Frage gibt einen Weg here

$(document).click(function(event) { 
    var text = $(event.target).text(); 
}); 
+1

Es gibt wenig Interesse, eine sehr alte Frage zu beantworten, die schon vorher beantwortet wurde. Außerdem hilft Ihre Antwort nicht, da das Original-Poster (OP) keine jquery verwendet. – JMax

+4

Das war genau das was ich gesucht habe! –