javascript - evento - simulate click jquery
Simular un clic en el elemento ''a'' usando javascript/jquery (7)
Aquí, prueba este:
$(''#gift-close'').on(''click'', function () {
_gaq.push([''_trackEvent'',''voucher_new'',''cart'',$(this).attr(''rel'')+''-mask_x_button-inaction'']);
});
Estoy tratando de simular un clic en un elemento. HTML para el mismo es el siguiente
<a id="gift-close" href="javascript:void(0)" class="cart-mask-close p-abs" onclick="_gaq.push([''_trackEvent'',''voucher_new'',''cart'',$(this).attr(''rel'')+''-mask_x_button-inaction'']);" rel="coupon"> </a>
¿Cómo puedo simular un clic en él? Yo he tratado
document.getElementById("gift-close").click();
Pero no está haciendo nada
El código que ya has probado:
document.getElementById("gift-close").click();
... debería funcionar mientras el elemento realmente exista en el DOM en el momento de ejecutarlo. Algunas formas posibles de asegurar que incluyen:
- Ejecute su código desde un controlador de
onload
para la ventana. jsfiddle.net/LKNYg - Ejecute su código desde un manejador listo para documentos si está usando jQuery. http://jsfiddle.net/LKNYg/1/
- Coloque el código en un bloque de script que esté detrás del elemento en el html de origen.
Asi que:
$(document).ready(function() {
document.getElementById("gift-close").click();
// OR
$("#gift-close")[0].click();
});
Intenta utilizar document.createEvent
descrito aquí https://developer.mozilla.org/en-US/docs/Web/API/document.createEvent
El código para la función que simula el clic debería verse más o menos así:
function simulateClick() {
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
var a = document.getElementById("gift-close");
a.dispatchEvent(evt);
}
Usando jQuery:
$(''#gift-close'').click();
Usando jQuery: $(''#gift-close'').trigger(''click'');
Usando JavaScript: document.getElementById(''gift-close'').click();
Use este código para hacer clic:
$("#gift-close").click();
Fragmento de código debajo!
Mire estos documentos y ejemplos en MDN , y encontrará su respuesta. Esta es la forma adecuada de hacerlo, diría yo.
Tomado del ''Evento de despacho (ejemplo)'' - HTML-link (simulate click):
function simulateClick() {
var evt = document.createEvent("MouseEvents");
evt.initMouseEvent("click", true, true, window,
0, 0, 0, 0, 0, false, false, false, false, 0, null);
var cb = document.getElementById("checkbox");
var canceled = !cb.dispatchEvent(evt);
if(canceled) {
// A handler called preventDefault
alert("canceled");
} else {
// None of the handlers called preventDefault
alert("not canceled");
}
}
Así es como lo haría (2017 ..):
Simplemente usando MouseEvent .
function simulateClick() { var evt = new MouseEvent("click"); var cb = document.getElementById("checkbox"); var canceled = !cb.dispatchEvent(evt); if (canceled) { // A handler called preventDefault console.log("canceled"); } else { // None of the handlers called preventDefault console.log("not canceled"); } }
document.getElementById("button").onclick = evt => {
simulateClick()
}
function simulateClick() {
var evt = new MouseEvent("click");
var cb = document.getElementById("checkbox");
var canceled = !cb.dispatchEvent(evt);
if (canceled) {
// A handler called preventDefault
console.log("canceled");
} else {
// None of the handlers called preventDefault
console.log("not canceled");
}
}
<input type="checkbox" id="checkbox">
<br>
<br>
<button id="button">Check it out, or not</button>