jqueryjquery-callback

Reference to an object from a callback function in jQuery


I have following situation. In a constructor of a pseudo class I attach a click event to an element. When the event is triggered I would like to refer from the callback function to the object where the event was set.

Code of the pseudo class constructor

function MyClass(){
  this.myClassAttribute = "A class attribute";

  // here `this` refers to the object

  $("span").click(function(){
    // here `this` refer to a matched element, i.e. "span"
    // How to get the value of `myClassAttribute`?
  });

}

How to refer to the object without an global variable?


Solution

  • In Javascript an anonymous function is able to reference all variables that existed at the scope of the function's creation. Since this gets reassigned in the callback function, you can create a local variable to store it before you enter the callback.

    function MyClass(){
      this.myClassAttribute = "A class attribute";
      var myClass = this;
    
      $("span").click(function(){
        myClass.myClassAttribute = "hello";
      });
    
    }