Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

302
Vistas
Jquery .append() se agrega en cada evento

Tengo un conocimiento mínimo de javascript y jquery, por lo que el problema es que cuando hago clic con la pestaña "li" del mouse y presione ENTER jquery adjuntar .append () en cada evento de clic del mouse.

 $(document).on("click", function(event){ let $ul_elem = $(event.target).parent().parent(); const $li = '<li><input type="text" name="geras"></li>' if($(event.target).parent().prop("localName")=="li"){ console.log($(this.event)) $(window).on("keydown", function(event){ if(event.keyCode == 13) { event.preventDefault(); $($ul_elem).append($li); $($ul_elem).children().last().children().focus(); return false } }) } else{ $(window).unbind("keydown"); } })

como resultado, si hago clic como 5 veces con el mouse en la misma pestaña li, se crearán 5 nuevos elementos const $ li y no quiero eso.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Debe evitar vincular controladores de eventos en el contexto de otro controlador de eventos. Actualmente, su código vuelve a vincular el controlador keydown en cada clic (cuando las declaraciones if tienen éxito). Esta es la razón por la cual el código agrega varios elementos en cada Enter. Supongo que desea agregar elementos li a elementos ul condicionalmente. En caso afirmativo, esta es una forma de hacerlo:

 $(document).on("click", "ul", function() { $(this).toggleClass('active'); }); $(window).on("keydown", 'ul.active', function(event) { if (event.keyCode == 13) { const $ul_elem = $(this); const li = '<li><input type="text" name="geras"></li>' event.preventDefault(); $ul_elem.append(li); $ul_elem.children().last().children().focus(); return false } })

Esto hace que el controlador keydown funcione de forma condicional mediante el uso de la delegación de eventos. En caso de que desee escuchar el evento keydown de los elementos de input , puede simplemente codificar $(document).on("keydown", 'input[type=text]', function(event) { ... y no es necesario para usar el controlador de click no estoy seguro de lo que estás tratando de lograr.

lo que quiero hacer es después de poner texto en mi campo de entrada li> predeterminado y presionar ENTER quiero crear un nuevo li en ul

Esto debería hacerlo:

 $(document).on("keyup", 'li input[type=text]', function(event) { if (event.keyCode == 13) { const $ul_elem = $(this).closest('ul'); const li = '<li><input type="text" name="geras"></li>' event.preventDefault(); $ul_elem.append(li); $ul_elem.children().last().children().focus(); } })
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda