Mark Kramer
Mark Kramer

Reputation: 3214

Can I add more after "this" in jQuery?

I'm working on a script that fades in and out both an image and a div I have set behind the image when you hover over the image. I'm having two problems:

  1. The fades on the image and div don't seem to move at the same speed even though I have them set to.

  2. I can't figure out how to get the div's to only show for the image you hover over. If I could type ("this" div.info) as an object, it would work fine. Is there a way to do that?

I can't get $(".info",this), $(this).find(".info"), or $(".info", $(this).closest("li")) to work.


Result: I have found the solution. I was able to get it to work by using lthibodeaux's suggestion and using $(".info", $(this).closest("li")) as the object and making all the functions .fadeTo go here for the result: http://jsfiddle.net/Z5p4K/7/

Edit:

Check out the final version here: http://jsfiddle.net/tV9Bw/

This is the final version because I can no longer find any problems with any of the code; everything is optimized, there are no glitches, and it looks great.

Thanks to everyone who answered and to Yi Jiang for editing this post with better formatting. I'm new to this site so I wasn't sure how to properly format my question.

and a Huge thanks to artyom.stv for fixing the last glitch in the script that I didn't know how to fix.

Upvotes: 4

Views: 229

Answers (3)

user529649
user529649

Reputation:

Yes you can use something like $(this).find(".info") as mentioned by Bundy

but as The jQuery constructor accepts a 2nd parameter which can be used to override the context of the selection. You can also do something like this:

$(".info",this)

Upvotes: 0

lsuarez
lsuarez

Reputation: 4992

You've got the general idea. One thing you should know about a selector is that you are able to define a second argument as the scope of the selector, i.e.

$("selectorString", scopeObject)

In your case, make the second argument $(this).closest("li"). It will find the list item containing your image and select .info descendants of that container:

$(".info", $(this).closest("li")).fadeIn(1000);

Upvotes: 2

bundy
bundy

Reputation: 121

Change $(".info") to $(this).find(".info") and all will be sweet.

Upvotes: 1

Related Questions