CONSEJO: Estas usando mal los Event Listeners en Javascript !!!

Поделиться
HTML-код
  • Опубликовано: 6 янв 2025

Комментарии • 242

  • @luisfrontendvue01
    @luisfrontendvue01 3 года назад +35

    Tambien empece con los foreach dando listeners a cada elemente, pero despues aprendi la delegacion de eventos y es una manera elegante y optima de colocar eventos a los items que se van creando dinamicamente, buen video!

  • @francisconunez1832
    @francisconunez1832 8 дней назад

    Te doy las gracias @FalconMasters. Antes de este ver este video cuando agregaba un "click" EventListener este se ejecutaba al cargarse la página pero NUNCA cuando presionaba el elemento. Ahora es distinto y el programa hace lo que se supone cuando se presiona dicho elemento y no cuando la pagina ha cargado.
    Y no solo eso sino que también puedo usar los EventListener de manera no necesariamente global para que funcione.

  • @elliotowasp4077
    @elliotowasp4077 3 года назад +15

    Más videos de estos. Excelente ejemplo para optimizar!

  • @christopherdallar1508
    @christopherdallar1508 3 года назад +4

    Son brutales tus videos de tips, nunca dejes de hacerlos, eres diferentes a los demás youtubers gracias a eso, Porque tu nos ayudas con tu experiencia y nos provees de exactamente maneras de mejorar y no solo con un curso y ya, sino mejorar lo que ya aprendimos

  • @MiguelGarcia-zy1sh
    @MiguelGarcia-zy1sh 3 года назад +12

    Eres excelente, he aprendido más contigo que con cualquier profesor, gracias por todo

  • @juliopaez9989
    @juliopaez9989 Год назад

    Muy bueno el video, excelente el tema de la propagación del evento. Una observación, probé armando una lista con 2 campos, Ejemplo campo1>campo2. Comprobé que funciona mal si se hace click adentro de los div internos, el click tiene que hacerse en el div de la fila.

  • @yoniervasquezmarin2319
    @yoniervasquezmarin2319 3 года назад +1

    Muy buen vídeo, la manera de manejar los eventos es muy excelente y me gustó la ventaja de que se detectan los clics en los nuevos nodos hijos agregados. Gracias por mostrarnos este método!.

  • @Hiroki_MakeGames
    @Hiroki_MakeGames Год назад +1

    Wow excelente! Muchas gracias por el vid. Me vino bárbaro como novato busco mejorar mi código , así que gracias !

  • @juancarlosruiz7012
    @juancarlosruiz7012 2 года назад

    Primer video que veo de tu canal. Muchas gracias por el contenido, explicas todo perfecto y vas al punto! Ya me he subscrito a tu canal 😀

  • @chicocrazy220691
    @chicocrazy220691 3 года назад

    Había olvidado la propagación de eventos, gracias por recordarme lo. Eres genial

  • @marcosgonzalezmarin8157
    @marcosgonzalezmarin8157 3 года назад

    gracias carlos arturo por compartir tu conocimiento, sin duda tus videos me han servidos ya desde hace un par de años

  • @edwynamador
    @edwynamador 3 года назад +10

    Faltó que mencionaras sobre removeEventListener (para los principiantes), que en ocasiones sí es un requisito, para no tener comportamientos inesperados o problemas de performance.

  • @madrigalmartinezkevinfranc1761
    @madrigalmartinezkevinfranc1761 3 года назад

    Excelente, no había escuchado si quiera de la delegación de eventos. De hecho me viene perfecto para optimizar un viejo script que se basa en esperar el evento load de imágenes, sabía que poner event listeners a la larga en grandes cantidades iba a ser problema. No tenía la más remota idea de que hacer en ese caso.

  • @lopuma1990
    @lopuma1990 2 года назад +1

    Pedazo de vídeo muy bien explicado, tienes más así ???, Ayudan mucho

  • @juliopaez9989
    @juliopaez9989 Год назад

    Genial tu video: totalmente funcional y útil para usarlo en mis paginas web. Gracias totales

  • @lucianoschmidt2398
    @lucianoschmidt2398 3 года назад

    Hermano me solucionaste la vida. No hubiera adivinado que podes asignar el evento al elemento padre ni por casualidad. Sos un genioooo

  • @alchemy_coder
    @alchemy_coder 2 года назад

    Excelente como siempre! ..y por favor, no se pierda, trate de subir videos de este estilo, cortos y directos a un asunto en especifico, son geniales! Saludos...

  • @undefined5339
    @undefined5339 3 года назад +2

    Pensé que lo estaba haciendo mal y que había una manera más optimizada de hacerlo, pero me doy cuenta de que aprendí bien y de la manera correcta:') muchas gracias!

    • @eljons1137
      @eljons1137 Год назад

      Me pasó lo mismo xD
      Sabía que lo estaba haciendo mal cuando ya llevaba varios listeners individuales dentro de un conjunto de elementos jajaja

  • @davidticstorm4114
    @davidticstorm4114 3 года назад

    Excelente video... Que buena manera mencionas para realizar la delegación de los eventos ... Son de gran ayuda. Saludos

  • @agussdk4194
    @agussdk4194 3 года назад

    Amigazo que buen video, en mi vida se me hubiera ocurrido, alta data, muchas gracias.

  • @osmanmazariegos4586
    @osmanmazariegos4586 3 года назад +6

    Excelente recomendación, y muy claro te felicito.

  • @pablowbk
    @pablowbk 3 года назад

    Buen consejo, sobre todo para los que stamos iniciando en la programación

  • @maximojuniorapazachirhuana9641
    @maximojuniorapazachirhuana9641 3 года назад +1

    cuando aprendi la delegacion de eventos en js me senti dios , jajaja porque yo antes si hacia lo que mostraste al inicio del video . Buen video

  • @pritep
    @pritep 3 года назад +2

    Excelente vídeo, no se me había ocurrido la segunda opción, lo que pense que ibas a hacer es que al crear un elemento de lista, crear con el un event listener. Pero siempre sorprendiendo :)

    • @FalconMasters
      @FalconMasters  3 года назад +2

      Me alegra mucho que te haya servido!

  • @borisxd6614
    @borisxd6614 3 года назад

    Excelente Falcón, es un enorme placer ver tus videos...

  • @lanb08
    @lanb08 3 года назад

    Que buen video, excelente demostración de como hacer una programación mas limpia. Muchas gracias por compartir tus conocimientos

  • @arromero491
    @arromero491 2 года назад

    Sigue con el buen trabajo, hermano, entendí todo por tu buena explicación.

  • @edwinloaiza1017
    @edwinloaiza1017 3 года назад

    Carlos excelente video y metodo super facil como siempre gran aporte.
    muchas gracias

  • @satoshi093
    @satoshi093 3 года назад

    Que cool. Yo también admito hago el primer caso y estaba empezando a preocupar el tema de tener tantos eventos pero con esto se me solocionaran esos temas 🤠

  • @taoistagames6077
    @taoistagames6077 3 года назад +1

    hola gracias por el video, duda: event listeners o function onclick en el botón, y el motivo. saludos muchas gracias.

  • @williamvasquez3600
    @williamvasquez3600 3 года назад

    Excelente explicación Falcon como siempre, continúa haciendo lo que haces, se te da muy bien. Me ayudaste muchísimo. Saludos

  • @arturrojas9209
    @arturrojas9209 2 года назад

    Excelente! muy profesional, gracias por el aporte 💯

  • @securecodingdevelopment5023
    @securecodingdevelopment5023 3 года назад

    Excelente gracias! hice un menu dinámico de esta forma donde le aplique que entregase un valor data-xxx para diferenciar, pero ahora lo dejare un poco mas limpio, y para las tablas donde remapeaba el listener hare lo mismo , saludos!

  • @WalterPagani
    @WalterPagani 3 года назад

    De momento no lo voy a usar (creo). Pero siempre esta interesante cosas nuevas cosas que permitan mejorar las habilidades. Nunca hay que dejar de estudiar y aprender.
    Casi se me olvida. Gracias por el vídeo.

  • @rodriguezfregosojosueleona6743
    @rodriguezfregosojosueleona6743 2 года назад

    15:06 ahi tengo una duda cuando usas tagname como es que se reconoce la A como etiqueta aunque no sea en minuscula ya que entiendo que esta comparando si se esta seleccionando la etiqueta ,entonces no importa si 'A' lo mone como mayuscula ? es decir si seria lo mismo que poner e.target.tagName==='a'

  • @jcruz30
    @jcruz30 3 года назад

    Excelente video, aunque esta un poco dificil cuando hay muchos elementos, por ejemplo en una tabla con tr > td > a(para editar) & a(para eliminar) ademas que cada uno tiene un icono en vez de letras por lo que cada vez que hago click me sale el elemento del icono y no del a (me sale o bien svg o path)

    • @FalconMasters
      @FalconMasters  3 года назад +1

      Si, este es un ejemplo sencillo, pero se puede aplicar a tablas. Le pones el listener al table y aun así todos los elementos dentro sin importar que tan profundos estén tendrán el listener. Es cosa de hacer un buen condicional.

    • @Cloweling
      @Cloweling 3 года назад +1

      Lo que puedes hacer, siempre agregando el evento a la tabla, agregar un attribute con inicial "data-" en el tag que quieres capturar, Ejemplo: data-row="delete" y con la condicional capturas al elemento cuando tenga ese atributo. Bueno aunque hay varias formas pero esa es la forma como se me ocurre.

  • @gabrieltenorio3517
    @gabrieltenorio3517 3 года назад

    He llegado a usar la segunda manera pero no de manera conciente.
    Ahora que entiendo cómo funciona, será más limpio mi código, ¡Gracias!

  • @kazza5545
    @kazza5545 2 года назад

    Excelente método! Por favor has más videos sobre optimización así como este, estoy haciendo mi primera app y no se nada de optimización! D:

  • @rancorsz
    @rancorsz 3 года назад

    Excelente, forma de optimizar y bastante práctico el ejemplo, muchas gracias

  • @TheCarloz2009
    @TheCarloz2009 3 года назад

    la forma de optimizar el Event Listeners es mediante la delegación de eventos al colocarle el evento al document y depuse detectar quien es el que emite el evento con la función matches, asi solo tenemos un Event Listeners en la aplicación

  • @GM-lh8be
    @GM-lh8be 3 года назад

    excelente explicación una observación so te falto explicar el e.stopPropagation() que se usa para detener la propagación de eventos a los hijos

  • @ODaro-mc7nm
    @ODaro-mc7nm 3 года назад

    Como siempre un placer ver tus videos!!

  • @erikmartinez8169
    @erikmartinez8169 Год назад

    Épale Carlos gracias por este video tu canal parece la caja de Pandora lleno de contenidos poderosos, gracias por la información

    • @FalconMasters
      @FalconMasters  Год назад +1

      Gracias Erik!

    • @erikmartinez8169
      @erikmartinez8169 Год назад

      @@FalconMasters todos los días aparte del curso de Javascript en udemy veo el contenido de tu canal, hermano ya me hice esa costumbre gracias por todo ese contenido

    • @FalconMasters
      @FalconMasters  Год назад +1

      @@erikmartinez8169 Eso es genial! Muchas gracias por hacérmelo saber, y me gustaría preguntarte, ¿como te sientes con lo que has aprendido?

    • @erikmartinez8169
      @erikmartinez8169 Год назад +1

      @@FalconMasters totalmente satisfecho hermano de verdad agradezco el esfuerzo que haces para compartir esos conocimientos geniales sobre desarrollo web, y si ya me he hecho el hábito de ver todos los vídeos del canal. Y voy por más cursos 😁

  • @bitmau77
    @bitmau77 2 года назад +1

    Cuando agregas 'A' al condicional, de donde es que esta saliendo? a que esta haciendo referencia ese 'A' ? si es a la etiqueta no entiendo porque en Mayúscula? si alguien que sepa me puede ayudar agradezco de antemano ;P

  • @MiguelGomez-lk7tn
    @MiguelGomez-lk7tn 2 года назад +1

    NO se si aun leas comentarios pero tus videos son lo mejor que he visto,gracias bro

    • @FalconMasters
      @FalconMasters  2 года назад

      Aún intento leer todos los comentarios.
      Muchas gracias por tu comentario!

  • @ftwtf
    @ftwtf 3 года назад

    Muy buen ejemplo!! Desconocía la propagación de eventos. Recientemente programé una sala de cine con tablas e itere los ≤td≥ para ponerles el click, eran más de 100 elementos 😂

  • @Tylorix
    @Tylorix 2 года назад

    yo lo hago con un insertar elemento html y le pongo el listener, así no tengo un foreach cada que agregas un elemento, pero me gusta bastante este método, lo único es que hay que estar atento a que evento le estas dando y a que target, por el tema de que todos los que estén anidados mas el padre tienen el mismo listener por así decirlo

  • @LenRM
    @LenRM 3 года назад

    Cómo siempre alucinante 😘💛💛💛 #elmejor

  • @ramonsaavedra7904
    @ramonsaavedra7904 Год назад

    Hola.. Y como se haria lo de el evento que no targetee al div si el padre es div y los hijos tambien?

  • @markuswater
    @markuswater 3 года назад

    Muchas gracias por compartir este consejo, desde ahora lo empezaré a aplicar!!

  • @xReDCrIsTx
    @xReDCrIsTx 3 года назад

    Muy bueno, no lo sabia y hacía la primera opción

  • @gerdebur
    @gerdebur 3 года назад

    Un video muy explicativo... gracias... se aprende mucho

  • @martinsantos718
    @martinsantos718 2 года назад

    Hola, tengo varios archivos js en mi proyecto. Cuando se carga un archivo se ejecutan las funciones que corresponden a la vista que se muestra, los otros que tienen el EventListener emiten un error en la consola del navegador porque no se están llamado en la vista. ¿Cómo puedo optimizarlo?

  • @heribertovelascomora8747
    @heribertovelascomora8747 3 года назад

    Genial muchas gracias, es muy útil esta forma de programar en javascript

  • @oscarbattaglia9130
    @oscarbattaglia9130 Год назад

    Muchas gracias muy clarito!
    Perdón por la ignorancia, pero porque en el JS se pregunta por A mayúscula en el tagName si el tag es a minuscula en HTML?

  • @edustreamimg
    @edustreamimg 3 года назад

    sabes si se pueden apilar varios cllick event en un solo ul? es decir que le configuro un listener en una parte de mi codigo y despues en otro lado me interesa conservar el primero y apilar un segundo.

  • @rigomorficooficial3827
    @rigomorficooficial3827 3 года назад

    Justo en un proyecto hice un menú de presupuestos me abría venido genial tu consejo jajaja

  • @joaquinbustelo7889
    @joaquinbustelo7889 2 года назад

    Me encanta la forma en la que explicas

  • @ezequielmartinezlopez8768
    @ezequielmartinezlopez8768 3 года назад

    Gracias por el video, aprendi algo nuevo e interesante.

  • @joserodrigolopezfuentes5607
    @joserodrigolopezfuentes5607 2 года назад +1

    Excelente. Me ayudo muchisimo :3 .

  • @rubenvalencia283
    @rubenvalencia283 3 года назад

    Gracias por el vídeo querido Falcon, he estado haciendo las cosas mal!

  •  3 года назад +1

    Existe otro problema: si haces click en el icono el tagName será "" en vez de "" y no se hará toggle de "activo".
    La solución es cambiar el if. La condición sería "el target es el elemento o es un elemento dentro del elemento

  • @mariaeugeniacabanas841
    @mariaeugeniacabanas841 3 года назад

    Hola Carlos, genial, Gracias!! como siempre excelente video. Saludos

  • @ramrmarquez
    @ramrmarquez Год назад

    Saludos ....
    Creo que esto es lo que estoy necesitando ....
    Se puede recuperar el id del elemento en el que yo hago click de multiples elementos igualitos pero con diferente id .... ??

  • @basiliocabreja1268
    @basiliocabreja1268 2 года назад

    Hola, muchas gracias por tus video ya que son bien explicativos. Quisiera crear un bot para una pagina web donde debo seleccionar intervalos de horas en un dia completo dividido en intervalos de media hora por ejemplo de 12:00 am a 12:30am, 12:30am a 1:00 am y así sucesivamente. hasta llegar al intervalo de 11:30pm a 12:00m.
    Dentro de la página hay un botón donde hay que hacer clic para actualizar el programa dentro de la página para ver los intervalos que están disponibles en ese momento, pero esos intervalos son liberados por el sistema al azar, y no puedo estar todo el día sentado en una PC actualizando la página para tomar las horas que pueda liberar el sistema a una hora cualquiera. Así que me gustaría crear un bot donde pueda actualizar la página en ese botón cada X segundos que yo quiera y que lo haga continuamente y cuando aparezcan esos intervalos de horas disponibles, el bot de detenga de actualizar la página y tome esos intervalos que estén disponibles y pueda elegirlos todos al mismo tiempo.
    Quisiera saber que lenguaje de programación aprender para hacer un bot de este tipo, si Javascript, Python o cual?

  • @SeiFukai
    @SeiFukai 3 года назад +1

    Muchas gracias Falcon, excelente video como siempre.

  • @andresescobar2582
    @andresescobar2582 3 года назад

    ¿La delegación de eventos la podría aplicar al document ? y hacer condicionales para e.target.matches o en su caso tagName ?

  • @delcarmat
    @delcarmat 2 года назад

    gracias es muy util yo tambien usaba un for antes

  • @terryadityaildefonsochagua3710
    @terryadityaildefonsochagua3710 2 года назад

    Mi pregunta es si se PUEDE OBVIAR poner en el condicional: e.target porque se supone que cuando se hace CLICK, ya hay un OBJETIVO, ya hay un TARGET, eso de puede OMITIR???

  • @luisdiaz8189
    @luisdiaz8189 3 года назад

    Mira yo compre tu curso haces unos años y se me borranron los estilos como puedo hacer para recuperarlo

  • @pabloantoniojuarezsalas
    @pabloantoniojuarezsalas 3 года назад

    Muchas gracias voy a incorporar este conocimiento en mi código.

  • @gabriellejq27
    @gabriellejq27 3 года назад +2

    Genial. Gracias por compartir.

  • @hamiltonsilesmercado5373
    @hamiltonsilesmercado5373 2 года назад

    Gracias, justo lo que necesito.

  • @CYBERKRANE
    @CYBERKRANE 3 года назад

    Muy buen tip, muy útil, Gracias Falcon.

  • @rondamon4408
    @rondamon4408 3 года назад

    ¿¿¿Si haces un preventDefault esto bloquearía el evento de la etiqueta "a"???

  • @igor.miranda
    @igor.miranda 3 года назад

    woow maestro de maestros.!! GRACIAS TOTALES.

  • @jaimeviloriogreen
    @jaimeviloriogreen 3 года назад

    Ojo que los elementos hijos no sean del mismo tipo de etiqueta del padre, es decir: . . . , ya que el tagName o nodeName es el mimo en el padre y en el hijo, y en caso de serlo, la verificación con el if debe ser más estricta usando, quizás, classList.contains(), por mencionar.

  • @jesusgabrielgarciamarquez704
    @jesusgabrielgarciamarquez704 11 месяцев назад

    Excelente video 👍🏻

  • @joanjoan8845
    @joanjoan8845 2 года назад

    Excelente! muchisimas gracias !

  • @giovannivoltaproxy
    @giovannivoltaproxy 3 года назад

    Muy buen contenido, la diferencia de usar arrow function vs function como segundo parametro es que con una function normal tienes que usar this para apuntar a tus var declaradas al principio y con la arrow function ya toma al objeto contexto en donde ejecutas, tengo esa duda que aprendí que con arrow function deja pasar al this de más arriba también comentan que no tiene this, gracias por el gran contenido

    • @henrycontal
      @henrycontal 3 года назад

      Las arrow function heredan el contexto del objeto global window, es por esa razón que si declaras una propiedad en window puedes acceder a ella mediante el this del contexto de una arrow function. Por otro lado, una function (la común) su contexto es la misma function, cabe resaltar que las funciones en JavaScript son también objetos.

    • @giovannivoltaproxy
      @giovannivoltaproxy 3 года назад

      @@henrycontal gracias por aclarar amigo todo : )

  • @digitalstablerds2498
    @digitalstablerds2498 2 года назад +1

    Muy buen video

  • @Liftercode
    @Liftercode 2 года назад

    Lo mismo para calculadora?

  • @rikromero1
    @rikromero1 3 года назад

    Que copado! Gracias!!

  • @davidhilera2877
    @davidhilera2877 3 года назад

    Excelente aporte.

  • @juliettecetina1494
    @juliettecetina1494 3 года назад

    Muchas gracias, explicación clara y concisa! Ahora a aplicarla 😊

  • @jeremyframirezpasapera596
    @jeremyframirezpasapera596 3 года назад

    Una pregunta y si dentro de un boton tendrias mas etiquetas por ejemplo
    icono
    Texto
    ¿cómo seria para que se ejecute el evento en todo ese contenedor del boton validandolo por clase ?

    • @Tylorix
      @Tylorix 2 года назад

      ya es de probar amigo

  • @darkl3iaX
    @darkl3iaX 3 года назад +1

    Muy genial todo wow!

  • @mpinovaz4014
    @mpinovaz4014 6 месяцев назад

    Muy buen tip, gracias.

  • @2005bgva
    @2005bgva 2 года назад

    Excelente, muy bueno.

  • @Lacruzama
    @Lacruzama 3 года назад

    Excelente video muchas gracias Falcón

  • @camilogarcia6224
    @camilogarcia6224 Год назад

    el codigo no me sale, se queda la nube saltando en la pantalla

  • @newentu
    @newentu 3 года назад

    Excelente tutorial!!

  • @jkf16m96
    @jkf16m96 3 года назад

    Buen video, no sabia esto!!

  • @JValenteM92
    @JValenteM92 3 года назад +1

    Que bueno, no sabía esa forma, gracias por existir...
    Pregunta: Hay una forma de obtener todos los campos de un formulario o id y enviarlos con POST usando fecth sin estar repitiendo formulario.append(data..., value...)!

    • @chepevic
      @chepevic 3 года назад +3

      const enviarForm=async()=>{
      const formulario=document.querySelector('#formulario'); //guardar formulario en una variable
      const form=new FormData(formulario); //captura todos los campos del formulario
      const response=await fetch('url',
      { method:'POST',
      body: form
      });
      const data=await response.json(); or response.text(); dependiendo lo que quieras obtener...
      console.log(data)//ver la respuesta
      }
      enviarForm();

  • @AlejandroMartinez-zw9if
    @AlejandroMartinez-zw9if 3 года назад

    Excelente explicación cómo siempre 😁👌

  • @Lashistoriasdelilith
    @Lashistoriasdelilith Год назад

    buenísimo como siempre

  • @FateeOG
    @FateeOG 3 года назад

    Buen video, sigue subiendo mas videos de JS

  • @ernestomotta5178
    @ernestomotta5178 3 года назад

    Me surgió una duda, en qué condiciones un evento de click no tendría Target? Gracias por el video, es súper bueno

  • @jhon.bianchi
    @jhon.bianchi 3 года назад

    Muy buen tutorial brother

  • @victorzuniga8894
    @victorzuniga8894 3 года назад

    Bueno para ser honesto soy muy principiante en javascript... Pero la primera forma no la conocía para nada!! Yo siempre he usado la segunda y me encanta saber que lo he estado haciendo bien! :)