2008-12-07 8 views

Respuesta

53

Si estás usando jQuery que puede hacer:

$('#elementid').click(); 
+2

no hacer trabajos para activar el elemento html seleccione onclick caso de que las opciones desplegables de la selección, ¿por qué? –

+1

$ ('# elementid'). Trigger ("click"); –

46

Una vez que haya seleccionado un elemento que puede llamar clic()

document.getElementById('link').click(); 

véase: https://developer.mozilla.org/En/DOM/Element.click

No recuerdo si esto funciona en IE, pero debería. No tengo una máquina de Windows cerca.

+0

Funciona en todos los navegadores http://www.w3schools.com/jsref/met_html_click.asp – rahmanisback

1

No he utilizado jQuery, pero IIRC, el primer método mencionado no desencadena el manejador onclick.

Llamaré directamente al método asociado onclick, si no está usando los detalles del evento.

2

¡simplemente llame a "onclick"!

He aquí un ejemplo html:

<div id="c" onclick="alert('hello')">Click me!</div> 
<div onclick="document.getElementById('c').onclick()">Fake click the previous link!</div> 
+2

Desafortunadamente esto no llenará el objeto del evento ... –

+1

él no mencionó que quiere llenar un objeto de "evento" ... solo que quiere llamar al método. Además, no estoy seguro de qué objeto no estás hablando. – hasen

+0

Toda mi lectura de hoy apuntó a usar .click(), usando .onclick() resolvió mi problema con safari 5.1.7 en win7 sin reconocer .click(). Chrome, FF, safari en iPad IOS6 todos reconocidos .click(). ¡Me volvía loco! Gracias hasen j PS $ ('elementid'). Onclick() funcionó con los otros navegadores por lo que no hay necesidad de excepción para Safari 5.1.7. No tengo idea sobre IE ya que hay tantos problemas que no puedo acercarme a este código para probarlo. Eso es por otro día. – Jim

2

Para decir, hay fireEvent() método. No sé si eso funciona para otros navegadores.

4

@ Vilx-

Firefox utiliza element.dispatchEvent.

La página incluye una muestra simulateClick().

+1

No veo una muestra simulateClick() allí. Por qué tenemos que copiar cosas aquí, porque las páginas cambian. – JosephK

3

Este es un ejemplo perfecto de dónde debe utilizar una biblioteca de JavaScript como Prototype o JQuery para abstraer las diferencias entre navegadores.

6

Podría estar malinterpretando su pregunta, pero, sí, esto es posible. La forma en que me gustaría ir sobre hacerlo es la siguiente:

var oElement = document.getElementById('elementId'); // get a reference to your element 
oElement.onclick = clickHandler; // assign its click function a function reference 

function clickHandler() { 
    // this function will be called whenever the element is clicked 
    // and can also be called from the context of other functions 
} 

Ahora, cada vez que se hace clic en este elemento, el código en clickHandler ejecutará. Del mismo modo, puede ejecutar el mismo código llamando a la función dentro del contexto de otras funciones (o incluso asignar clickHandler para manejar eventos activados por otros elementos)>

+0

Probablemente tendría problemas si quisiera usar el "ev.target" dentro de este manejador de clics ... – daddywoodland

-3

También puede intentar obtener el atributo onclick del elemento y luego pasar a eval. Esto debería funcionar a pesar del gran tabú sobre eval.Pongo un ejemplo a continuación

eval(document.getElementById('elementId').getAttribute('onclick')); 
+1

Esto funciona bien a menos que el script onclick haga referencia a algo que no se importa en el espacio de nombres del script. – ascotan

4

Si estás usando jQuery, es necesario utilizar la función .trigger, por lo que sería algo así como:

element.trigger('click'); 

http://api.jquery.com/trigger/

0

Usando javascript que pueda disparador click() y focus() como el ejemplo siguiente

document.addEventListener("click", function(e) { 
 
    console.log("Clicked On : ",e.toElement); 
 
},true); 
 
document.addEventListener('focus',function(e){ 
 
    console.log("Focused On : ",e.srcElement); 
 
},true); 
 

 
document.querySelector("#button_1").click(); 
 
document.querySelector("#input_1").focus();
<input type="button" value="test-button" id="button_1"> 
 
<input type="text" value="value 1" id="input_1"> 
 
<input type="text" value="value 2" id="input_2">

Cuestiones relacionadas