1

Code:

function Customer(name){
   this._name=name;
};

Customer.prototype.init=function(){
   $('#SetCreditLevel').click(function(){
      //best way to access this._name ?
      //this now points to DOM element

   });
}

1 Answer 1

2

Something like this? You could override the value of this by setting your own context, but it is very useful to be able to access the DOM object as this in jQuery, and a fundamental part of how jQuery works. If you were to change that, I'd say you're not hardly using jQuery at all. So instead, i'm passing context as a parameter here...

function Customer(name){
   this._name=name;
};

Customer.prototype.init=function(){
   $('#SetCreditLevel').click((function(context){
       return function() {
           alert(context._name);
           alert(this);
       }
   })(this));
}
Sign up to request clarification or add additional context in comments.

3 Comments

it works, but I don't fully understand how. I see a self executing anonymous function which is passed the context, - this part I understand. The body of this function is a mystery to me, though. Why is function being returned? How does it work?
it's the beauty of javascript scopes. jQuery's click expects a function. so you execute some code that returns a function, which is then used as the click input param. the code that's being executed accepts a context parameter, and since it does, that becomes part of the scope of the inner function, so that it can be accessed there, with whatever value was originally passed to the parent function.
That's very elegant, real life usage of closures

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.