En jquery puedes hacer esto fácilmente usando algo como:
//to trigger click with params jQuery(domElement).trigger( 'click', [ additionalParameters ] ); //to listen click the params jQuery( domElement ).on( 'click', function( event, parameters ) { event.stopImmediatePropagation(); }¿Cómo hacer esto usando javascript puro?
No podemos usar 'nuevo evento personalizado' porque no acepta 'clic' como evento. No podemos usar 'nuevo MouseEvent' porque, a diferencia de 'CustomEvent', no tiene la capacidad de pasar parámetros.
Podemos usar algo como esto:
//to trigger click with params domElement.addEventListener("click", function(e) { var event = new CustomEvent("fakeClick", {'detail': { custom_info: 10, custom_property: 20 }}); this.dispatchEvent(event); }); //to listen click the params domElement.addEventListener('fakeClick', function(event) { var parameters = event.detail; event.stopImmediatePropagation(); });Pero no podemos usar 'stopImmediatePropagation' porque solo afectará nuestro evento 'fakeClick'. Como queremos que afecte a 'clic'.
¿Cómo jQuery puede hacer esto? Debería haber una manera de hacer esto usando javascript puro.
Editar: algún tipo al azar que menciona sobre otro hilo, que no está relacionado. Estoy preguntando cómo jquery hace esto. Esto es lo que mencionó: => ¿Cómo pasar argumentos a la función de escucha addEventListener?
En su evento fakeClick , en el parámetro adicional envíe también el evento original y aplique stopImmediatePropagation en él:
//to trigger click with params domElement.addEventListener("click", function(e) { var event = new CustomEvent("fakeClick", {'detail': { custom_info: 10, custom_property: 20, originalEvent: e }}); this.dispatchEvent(event); }); //to listen click the params domElement.addEventListener('fakeClick', function(event) { var parameters = event.detail; var clickEvent = parameters.originalEvent; event.stopImmediatePropagation(); clickEvent.stopImmediatePropagation(); });Hola, por favor verifique el código a continuación.
tu funcion
function testFunction(num) { $('.my-output').html('Value'+num); }Agregar evento a parámetro
<div class="my-object">Click Here</div> <div class="my-output"></div>Ejecutar evento
$('.my-object').trigger(testFunction(123)); function testFunction(num) { $('.my-output').html('Value'+num); } $('.my-object').trigger(testFunction(123)); <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div class="my-object">Click Here</div> <div class="my-output"></div>