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

288
Vistas
Why is jQuery on-click event handler not working properly for dynamic loaded DOM elements?

I load my JavaScript file in the at my home page, then I navigate to the page where I need a onclick function. The onclick is attached to content that has been loaded dynamically over time via AJAX calls. The elements I try to reach are constructed like:

<a href="#" id="query_2" class="list-group-item query">Alle huurdergegevens</a>

And in my JavaScript file I wrote this:

$(".query").click(function() {
    var id = $(this).attr('id');
    id = id.replace(/\D/g,'');
    console.log(id);
    exeSQL(id);
});

When I click the element, literally nothing happens.. Nothing logged in the console, no errors aswell.. Can't figure out what I'm doing wrong tbh..

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

when you load any element in DOM after DOM is created then you have to handle click event like this with using on

$(document).on("click",".query",function() {
    var id = $(this).attr('id');
    id = id.replace(/\D/g,'');
    console.log(id);
    exeSQL(id);
});
about 4 years ago · Santiago Trujillo Denunciar

0

You have to use this syntax for events on dynamic content

$(document).on('click','.query',function() {
    var id = $(this).attr('id');
    id = id.replace(/\D/g,'');
    console.log(id);
    exeSQL(id);
});

See an example :

$(document).on('click', '#myButton', function(){
  alert('ok')
})
<html>
  <head>
  </head>
  <body>
    <input type="submit" id="myButton"/>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js">         </script>
  </body>
</html>

about 4 years ago · Santiago Trujillo Denunciar

0

For anyone that stumbles across this like I did, the following is how I ended up here and also why the top answer solves the problem:

  • I was using body for my event handlers: $('body').on('contextmenu', '#myctl', function(e) {
  • My event handlers were bound to dynamic and static elements
  • The event handlers were working when in my main page
  • They stopped working when I moved them to an external JS file

The solution in the top answer solved my problem because it used $(document) to bind the event handlers instead of $('body').

Why?

The reason that moving to $(document) solves the issue is that $('body') doesn't actually exist in the external JS file. By using $(document), JQuery is able to attach the event handler to something that actually exists and the event handlers start working again.

Summary

If using event handlers (for statis or dynamic elements) in external JS files, use $(document).on(...) instead of $('body').on(...).

about 4 years ago · Santiago Trujillo 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