Reputation: 81
Tell me, please, now everything works fine, but one item remains open, close it?
$(document).ready(function () {
var open = $('.open'),
a = $('.location_cont').find('a.open');
$(".item_in ul").customScrollbar({
skin: "default-skin",
hScroll: false,
});
open.on('click',function (e) {
e.preventDefault();
var $this = $(this),
speed = 300;
if ($('.open').hasClass('active') === true) {
$('.open').removeClass('active').next('.item_in').slideUp(speed);
}
if ($this.hasClass('active') === true) {
$this.removeClass('active').next('.item_in').slideUp(speed).find('ul').customScrollbar("resize", true);
} else if ($this.hasClass('active') === false) {
$(".item_in ul").css("resize", true);
$this.addClass('active').next('.item_in').slideDown(speed).find('ul').customScrollbar("resize", true);
} else {
$this.removeClass('active').next('.item_in').slideUp(speed);
$this.addClass('active').next('.item_in').delay(speed).slideDown(speed).find('ul').customScrollbar("resize", true);
}
});
});
Upvotes: 1
Views: 337
Reputation: 2405
i have modified in the fiddle
$(document).ready(function () {
var open = $('.open'),
a = $('.location_cont').find('a.open');
$(".item_in ul").customScrollbar({
skin: "default-skin",
hScroll: false,
});
open.on('click',function (e) {
e.preventDefault();
var speed = 300;
if ($(this).hasClass('active') === true) {
$(this).removeClass('active').next('.item_in').slideUp(speed).find('ul').customScrollbar("resize", true);
} else if ($(this).hasClass('active') === false) {
$(".item_in ul").css("resize", true);
$(this).addClass('active').next('.item_in').slideDown(speed).find('ul').customScrollbar("resize", true);
}
});
});
cancel
if ($('.open').hasClass('active') === true) {
$('.open').removeClass('active').next('.item_in').slideUp(speed);
}
and use $(this) instead variable $this.
remove also the last else because isn't necessary
Upvotes: 1
Reputation: 97672
Don't remove the active
class when you slide up so you can check to see if it if the current element that was clicked.
open.on('click',function (e) {
e.preventDefault();
var $this = $(this),
speed = 300;
if ($('.open').hasClass('active') === true) {
$('.open').next('.item_in').slideUp(speed);
}
if ($this.hasClass('active') === true) {
$this.removeClass('active').next('.item_in').slideUp(speed).find('ul').customScrollbar("resize", true);
} else {
$(".item_in ul").css("resize", true);
$('.open').removeClass('active');
$this.addClass('active').next('.item_in').slideDown(speed).find('ul').customScrollbar("resize", true);
}
});
Upvotes: 0