JQuery 'this' keyword

  • #1
312
0
I've read in several sources that the keyword 'this', and have come up with the following summary:

There are two "main contexts" where the keyword 'this' is used within
jQuery. The first refers to a DOM object, and the second to a jQuery
object. 'this' is a DOM element when we are inside of a callback function
(in the context of jQuery for example, being called by the click, each,
bind, etc. methods). 'this' is a jQuery object when we are inside own
jQuery functions.

But I am having difficulty with the context it is used, and having a difficult time trying to understand it's equivalent. I've also attached the HTML file (if necessary, and if people have the time to read)

-------------------------------------------------------------------------------------
This is a .js segment of code I would like to look at (for those that also have the time):
-------------------------------------------------------------------------------------

//jQuery allows for the web-page to behave dynamically.

var holder = $.fn;
holder.extend({
SplitID : function()
{
return this.attr('id').split('-').pop();​
},​

Slideshow : {
Ready : function()
{
$('div.tmpSlideshowControl')
.hover(
function() {
$(this).addClass('tmpSlideshowControlOn');​
},​
function() {
$(this).removeClass('tmpSlideshowControlOn');​
}​
)​
.click(
function() {
holder.Slideshow.Interrupted = true;

$('div.tmpSlide').hide();
$('div.tmpSlideshowControl').removeClass('tmpSlideshowControlActive');

$('div#tmpSlide-' + $(this).SplitID()).show()
$(this).addClass('tmpSlideshowControlActive');​
}​
);​

this.Counter = 1;
this.Interrupted = false;

--------------------------------------------------------------------------------------
My Question:

1.)
Every keyword 'this' could be removed from the segment of code above, except for 'this.Counter = 1'. But for the rest of the code why not just remove it? For instance "$(this).whatever." could simply just be written as "$.whatever".

2.)
Ready() is not a callback function, so the keyword 'this' used in this segment refers to a jQuery element. Instead of writing 'this', could we write the element's name in its place? For instance $(element's name).removeClass('tmpSlideshowControlOn'); (elements name for a slide show would be the ID name defined in the HTML?)?​

3.)
Why is the keyword 'this' is required in this.Counter = 1? Is it because 'this' refers to a DOM element, or because Counter is a new variable, I am pretty confused? When I wrote this.Counter=1 as holder.Slideshow.Counter = 1, the page loaded the same- from which I concluded both are the same. But the question remains, why is this required here, and other portions (above that particular line) of the code, I could remove the keyword 'this'?​

Any help would be great, thanks.​
 

Attachments

  • segment of HTML file.txt
    2.5 KB · Views: 343
Last edited:

Answers and Replies

  • #2
312
0
Question #3:
I think the answer to #3 is because Counter was not previously defined, so we had to define it within the jquery object Slideshow. Otherwise the variable Counter would be syntaxically incorrect.

Question #2 (and thus #1):
All the references to the keyword 'this' could be replaced with holder.Slideshow (or could be completely removed, unless a new variable is being declared), which leads me to conclude that the keyword 'this' is something of a convention of style (in my opinion useless). Thus, I feel that I've answered my own questions, but if I'm wrong in anyway, could someone be kind enough to let me know.

Thanks,

JL
 
Last edited:
  • #3
Borg
Science Advisor
Gold Member
1,892
2,485
'this' is a keyword in Javascript (and Java) and is not specific to JQuery. This site should help with what you're trying to understand: http://www.quirksmode.org/js/this.html" [Broken]
 
Last edited by a moderator:

Related Threads on JQuery 'this' keyword

  • Last Post
Replies
2
Views
3K
  • Last Post
Replies
1
Views
3K
  • Last Post
Replies
1
Views
1K
  • Last Post
Replies
2
Views
2K
  • Last Post
Replies
3
Views
9K
Replies
2
Views
2K
Replies
3
Views
16K
  • Last Post
Replies
2
Views
2K
  • Last Post
Replies
3
Views
2K
  • Last Post
Replies
1
Views
2K
Top