'Trying to reload DIV content after class change

I am trying to create a script that when a button is clicked it changes the class of a DIV and then reloads the content of that DIV.

So far I have created a script that successfully changes the class of the DIV.

document.addEventListener("DOMContentLoaded", function (event) {
  jQuery("#button").click(function () {
    document.getElementById("id").className = "newClass";
  });
}); 

but I still need it to reload the content of the DIV with the new class. I have looked around for a solution and found the following code that I have tried to add:

$("#id").load(window.location.href + " #id");

But gives me the following error:

(index):470 Uncaught TypeError: $ is not a function

What am I doing wrong here?



Solution 1:[1]

At first you have to map jQuery to $ to use code like $("#id").load(window.location.href + " #id"); Otherwise you have to use jQuery("#id").load(window.location.href + " #id"), like you did in your example. This is done by:

jQuery(document).ready(function( $ ){       
    // your Code goes here  
});   

You also used plain JavaScript and jQuery for the same purpose. document.getElementById("id") is equal to $('#id').

There can be many classnames, so a function or attribute .className can't make a sense. There is a list of classnames, and you you can add /remove them per .addClass() / removeClass() in jQuery or .classList.add() / classList.remove() in plain javaScript.

jQuery(document).ready(function( $ ) {
    
    $("#button").click(function () {
      $("#id")
         .addClass("newClass")
         .load(window.location.href + " #id");
  });
    
});

An load the content as Roko described.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Nathaniel Flick