Как использовать в jQuery: not и hasClass() чтобы получить определенный элемент без класса
у меня есть эта строка кода:
$('#sitesAccordion .groupOfSites').click(function() {
var lastOpenSite = $(this).siblings().hasClass(':not(.closedTab)');
console.log(lastOpenSite);
});
Я получаю "false" вместо того, чтобы получить один из других элементов (предполагая, что он есть - и должен быть). Я думаю, проблема заключается в следующем:
.hasClass(':not(.closedTab)');
в чем проблема?
моя цель-создать свой собственный аккордеон (без использования jQuery UI)
и я пытаюсь написать так:
$('#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');
});
Это лучший способ? спасибо, Алон
5 ответов:
использовать
not
функция:var lastOpenSite = $(this).siblings().not('.closedTab');
hasClass
только проверяет, имеет ли элемент класс,not
удалит элементы из выбранного набора, соответствующие предоставленному селектору.
Это гораздо проще сделать так:
if(!$('#foo').hasClass('bar')) { ... }
The ! перед критериями означает false, работает на большинстве языков программирования.
jQuery
hasClass()
метод возвращает логическое значение (true или false), а не элемент. Кроме того, параметр, который должен быть ему присвоен, является именем класса, а не селектором как таковым.например:
x.hasClass('error');
вы также можете использовать jQuery-это (селектор) метод:
var lastOpenSite = $(this).siblings().is(':not(.closedTab)');