2010-09-21 11 views
5

Necesito hacer clic en el elemento en la función getClickedElement. ¿Cómo puedo hacer esto?JavaScript: Haz clic en el elemento

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

Puedo establecer solo el atributo href. No puedo establecer el evento onclick porque estos elementos son generados por lib de terceros.

Gracias.

+0

Sería de gran ayuda si dijo por qué necesita esto, qué quiere hacer. Tal vez hay otras formas. – AlexanderMP

+0

¿Qué es la biblioteca de terceros? –

Respuesta

7

No puede obtener el elemento cliqueado en una URL javascript:. El evento ya ha finalizado, por lo que no hay event.target (o window.event.srcElement para IE), y los enlaces javascript: no se invocan con this establecido (para que obtenga window).

Por supuesto, si usted sabe el enlace en cuestión es id="test" que puede hacer document.getElementById('test'), pero sospecho que más bien falta el punto de lo que quiere hacer.

Puedo establecer solo el atributo href. No puedo configurar el evento onclick porque estos elementos son generados por lib de terceros.

Arregle o suelte la lib. javascript: Las URL son horrores que se deberían usar nunca.

¿Se puede agregar un <script> en otra parte de la página? Si es así, puede inyectar un controlador de eventos click en el elemento (s) sin necesidad de ningún marcado adicional. ej .:

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; 
} 

De hecho, la asignación de JS (con on... oa través de addEventListener con attachEvent de reserva para IE) es la forma mejor práctica de añadir controladores de eventos de todos modos.

+1

Aunque esta respuesta fue útil, no estoy seguro de lo que quiere decir el que responde por 'document.links [i] es uno de los enlaces a los que quiere dirigirse '. ¿Cómo alguien escribiría esta comparación en el código real?¿Por qué el autor de esta respuesta no escribió el código real en lugar de saltar al azar en términos simples? –

2
<a href="javascript:alert(getClickedElement('test'))" id="test">click me!!!</a> 

<script> 
function getClickedElement (id) { 
    return document.getElementById(id); 
} 
</script> 

o, si no puede predecir la ID, puede usar Javascript para adjuntar eventos después de cargar la página. Mira jQuery. Use algo como $('a').click(function() {return this.id; });

+0

No sé la ID del elemento. Es generado por lib de terceros. Puedo establecer solo el valor href. – Dumitru

+2

puede usar Javascript y luego adjuntar eventos después de cargar la página. Mira jQuery. Use algo como '$ ('a'). Haga clic en (function() {return this.id;});' – AlexanderMP

0

puede pasar esto como un parámetro y luego puede saber cuál es el elemento que está buscando. por ejemplo:

<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> 

esperan que ayude a usted, que me ayudó a :)

5

la siguiente pregunta statckoverflow da una manera de detectar el elemento se ha hecho clic here

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

Hay poco interés en responder una pregunta muy antigua que ya fue respondida anteriormente. Además, su respuesta no ayuda ya que el Póster original (OP) no utilizó jquery. – JMax

+4

¡Esto era exactamente lo que estaba buscando! –

Cuestiones relacionadas