Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

303
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!