I have this line of code:
$('#sitesAccordion .groupOfSites').click(function() {
var lastOpenSite = $(this).siblings().hasClass(':not(.closedTab)');
console.log(lastOpenSite);
});
I get "false" instead of getting one of the other elements (assuming that there is one - and there must be). I guess the problem is with:
.hasClass(':not(.closedTab)');
What is the problem?
My purpose is to create my own accordion (without using jQuery UI)
and I am trying to write it like this:
$('#sitesAccordion .groupOfSites').click(function() {
//Get the last opened tab
var lastOpenSite = $(this).siblings().hasClass(':not(.closedTab)');
//Close last opened tab and add class
lastOpenSite.hide().toggleClass('closedTab');
//Open the current Tab
$(this).children('.accordionContent').toggle('fast');
// remove class from open tab
$(this).toggleClass('closedTab');
});
Is this the best way? thanks, Alon
It's much easier to do like this:
The ! in front of the criteria means false, works in most programming languages.
You can also use jQuery - is(selector) Method:
jQuery's
hasClass()
method returns a boolean (true/false) and not an element. Also, the parameter to be given to it is a class name and not a selector as such.For ex:
x.hasClass('error');
Use the
not
function instead:hasClass
only tests whether an element has a class,not
will remove elements from the selected set matching the provided selector.I don't know if this was true at the time of the original posting, but the siblings method allows selectors, so a reduction of what the OP listed should work.