views:

33

answers:

1

Hi,

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 :/

+6  A: 

Do this instead:

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

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

Justin Johnson
Thanks for the answer, and thanks for the link! :)
acidtv