I've got a UL list, each LI has a hidden DIV, and a "More info" link that shows the hidden DIV. However, clicking this button shows all the other LI's hidden DIVs as well.
How can I only hide/show the DIV in the LI, and not have all the other hidden DIV's show?
And if I click on one how can I hide the others? I'd like to keep this part separate though in case I want to remove it later.
Also on click I want the text in the "More info" link to change to "Hide".
Here's my current script:
$(window).load(function() {
$('.grey_button a').toggle(function() {
$('.job_description').slideDown('');
return false;
},
function() {
$('.job_description').slideUp('');
return false;
});
});
if html structure is like this ::
then Jquery Code for your requirement will be like this
Jquery:
CSS make job-information hidden initially:
This code will open the actual content and hide all others:
calling
.slideUp()
on the class will hide them all, and then just use the$(this)
keyword to trigger only the class within theli
.try:
$('.grey_button a').toggle(function() { $('.job_description').slideUp(); $(this).parent().find('.job_description').slideDown(); return false; }
You should use
this
context while accessing theli
Please tryThe following jQuery should work:
This assumes HTML similar to the following:
JS Fiddle demo.
Incidentally, there's no need to pass an empty string to
slideUp()
/slideDown()
, without an argument being passed (either an integer (number in millisecons), or a string) a default value will be used instead, of 400 milliseconds.References:
closest()
.find()
.