link evento event div agregar after javascript jquery html triggers eventtrigger

javascript - evento - jQuery.trigger(''clic'') no funciona



jquery this click (11)

Parece que simplemente no puedo entender la función de jQuery trigger (''clic'') correctamente.

¿Puede alguien decirme por qué este simple código no funciona y cómo solucionarlo?

HTML:

<a id="bar" href="http://stackoverflow.com" target="_blank">Don''t click me!</a> <span id="foo">Click me!</span>

jQuery:

jQuery(''#foo'').on(''click'', function(){ jQuery(''#bar'').trigger(''click''); });

Demostración: FIDDLE

Lo que quiero es poder hacer clic en #foo (que funciona bien) y simular un clic en #bar (que se ignora por completo sin ningún mensaje de error). Probé también con jQuery(document).ready(function(){...}) pero sin éxito.


Este es el comportamiento de JQuery. No estoy seguro de por qué funciona de esta manera, solo activa la función onClick en el enlace.

Tratar:

jQuery(document).ready(function() { jQuery(''#foo'').on(''click'', function() { jQuery(''#bar'')[0].click(); }); });


He intentado las dos respuestas principales, no funcionó para mí hasta que eliminé "display: none" de los elementos de entrada de mi archivo. Luego volví a .trigger () también funcionó en safari para Windows.

Así que conclusión, No use pantalla: ninguno; para ocultar su entrada de archivo , puede usar opacity: 0 en su lugar.



No puede simular un evento de clic con javascript. La función jQuery .trigger() solo .trigger() un evento llamado "clic" en el elemento, que puede capturar con el .on() .


Prueba esto que funciona para mí:

$(''#bar'').mousedown();


Puede ser útil:

El código que llama al Trigger debe ir después de que se llame al evento.

Por ejemplo, tengo un código que quiero que se ejecute cuando se cambia el valor de #expense_tickets, y también, cuando la página se recarga

$(function() { $("#expense_tickets").change(function() { // code that I want to be executed when #expense_tickets value is changed, and also, when page is reload }); // now we trigger the change event $("#expense_tickets").trigger("change"); })


Solo tiene que poner un pequeño evento de tiempo de espera antes de hacer .click() esta manera:

setTimeout(function(){ $(''#btn'').click()}, 100);


Técnicamente no es una respuesta a esto, sino un buen uso de la respuesta aceptada ( https://.com/a/20928975/82028 ) para crear los botones next y prev para las pestañas en los campos de jQuery ACF:

$(''.next'').click(function () { $(''#primary li.active'').next().find(''.acf-tab-button'')[0].click(); }); $(''.prev'').click(function () { $(''#primary li.active'').prev().find(''.acf-tab-button'')[0].click(); });


Ver mi demo: http://jsfiddle.net/8AVau/1/

jQuery(document).ready(function(){ jQuery(''#foo'').on(''click'', function(){ jQuery(''#bar'').simulateClick(''click''); }); }); jQuery.fn.simulateClick = function() { return this.each(function() { if(''createEvent'' in document) { var doc = this.ownerDocument, evt = doc.createEvent(''MouseEvents''); evt.initMouseEvent(''click'', true, true, doc.defaultView, 1, 0, 0, 0, 0, false, false, false, false, 0, null); this.dispatchEvent(evt); } else { this.click(); // IE Boss! } }); }


jQuery''s .trigger(''click''); solo causará que se desencadene un evento en este evento, tampoco activará la acción predeterminada del navegador.

Puede simular la misma funcionalidad con el siguiente JavaScript:

jQuery(''#foo'').on(''click'', function(){ var bar = jQuery(''#bar''); var href = bar.attr(''href''); if(bar.attr("target") === "_blank") { window.open(href); }else{ window.location = href; } });


jQuery(''#foo'').on(''click'', function(){ window.open(jQuery(''#bar'').attr(''href''), ''_blank''); });