In the snippet below I use $(this) to refer to the element in which the function is being called from. I know it is not correct because I printed out the values an
jQuery sets this itself, generally to point to the current element.
Otherwise, in JavaScript...
var a = {
b: function() {
// `this` is `a`
}
}
a.b();
Except, where the property becomes assigned to a variable. Observe...
var c = a.b;
c(); // the `this` will point to `window`
var a = function() {
// `this` is `window`
}
a();
var C = function() {
// `this` is `c`
}
var c = new C();
Note that if your forgot to instantiate with new, JavaScript will assign those properties to the global object (window in a browser).
// In global scope `this` is `window`
var d = this;
call() or apply()You can also set this explicitly with call() and apply() function methods.
Thanks for the explanation of 'this' but I still dont understand why the reference isn't working in my code
My apologies.
$(this).name won't work as this is now a jQuery object and has only a few properties (none of which are name).
Either use $(this).attr('name') or drop wrapping this with the jQuery object and just access this.name.
That's what the obj parameter is for in the onSelect function, so you'd reference $(obj). Just for reference, this will refer to the associated input field.
For reference, see: http://jqueryui.com/demos/datepicker/ > Events > onSelect