Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Pass method to function

In Javascript I'm trying to pass a class member to a jQuery function, but somehow the 'this' object in that function gets messed up. This is the code:

function Hints() 
    {
    this.markProduct = function() { alert('hi'); };
    this.selectProduct = function() { this.markProduct(); }; 
    }

When I call this code using this:

oHints = new Hints();
oHints.selectProduct();

It works just fine and the 'this' object in the 'selectProduct' function refers to the Hints object. But when I try this:

oHints = new Hints();
$('#prodquery').keydown(oHints.selectProduct);

The 'this' object in the 'selectProduct' function refers to the html object that fired the keydown event.

Does anyone have a clue? I'm puzzled :/

like image 620
acidtv Avatar asked Feb 27 '23 23:02

acidtv


1 Answers

Do this instead:

$('#prodquery').keydown(function() { oHints.selectProduct() });

And then read this for explanation of how this works in different contexts.

like image 151
Justin Johnson Avatar answered Mar 12 '23 17:03

Justin Johnson