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

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

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 Report

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 Report

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 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!