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