Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • Home
  • SEARCH
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8913511
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 15, 20262026-06-15T04:28:58+00:00 2026-06-15T04:28:58+00:00

I wanted to add a loading class to the body element on every ajax

  • 0

I wanted to add a “loading” class to the body element on every ajax call that takes more than 300ms.
so I added the following script to my common.js file:

$(document).ready(function ()
{
    var timer;
    $("body").on({
        ajaxStart: function ()
        {
            var body = $(this)
            var timer = setTimeout(function ()
            {
                body.addClass("loading");
            }, 300)
        },
        ajaxStop: function ()
        {
            $(this).removeClass("loading");
            clearTimeout(timer);
        }
    });
});

Now this works if i make the ajax calls at leas 1sec long.
When they are immediate the loading class remains on the body element.

I suspect that the first the ajax call ends before 300ms expires that calls for removing the class and clearing the timer, lets say this takes 10ms, but then the timer the fires after 290ms more…

I wonder how could i test for that?
and weather I’m doing something wrong to achieve the described above task.

P.S
I’m using ASP.NET MVC.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-15T04:29:00+00:00Added an answer on June 15, 2026 at 4:29 am

    You’re redeclaring the variable, loosing the higher scope of the previously declared variable:

    $(document).ready(function () {
        var timer;
        $(document).on({
            ajaxStart: function () {
                var body = $(document.body);
                timer = setTimeout(function () { //don't use the "var" keyword
                    body.addClass("loading");
                }, 300)
            },
            ajaxStop: function () {
                clearTimeout(timer);
                $(this).removeClass("loading");
            }
        });
    });
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I wanted to add <br> after every 2 loops. The loop will run 8
I wanted to add 2 columnts to an MSSQL table by changing class and
I wanted to add more methods to the Calendar from java.util.Calendar, but I'm having
I wanted to add crash reporting capabilities to my iPhone app. Kind of the
I wanted to add a new property to one of my model (table). Basically
I wanted to add a StackOverflow-style tag input to a blog model of mine.
I wanted to add some analytics functionnalities to my app so I created an
Initially i wanted to add trailing / in my url (lighttpd) which is possible
Lets say i wanted to add another variable to the database can anybody tell
I have a UIImageView and I wanted to add a black overlay on top

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.