Javascript 如何在jQuery:not和hasClass()中使用来获取没有类的特定元素
我有一行代码:Javascript 如何在jQuery:not和hasClass()中使用来获取没有类的特定元素,javascript,jquery,html,accordion,Javascript,Jquery,Html,Accordion,我有一行代码: $('#sitesAccordion .groupOfSites').click(function() { var lastOpenSite = $(this).siblings().hasClass(':not(.closedTab)'); console.log(lastOpenSite); }); 我得到的是“false”,而不是其他元素中的一个(假设存在一个,并且必须存在)。我想问题在于: .hasClass(':not(.closedTab)');
$('#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');
});
if(!$('#foo').hasClass('bar')) {
...
}
这是最好的方式吗?
谢谢
除此之外,请使用以下功能:
var lastOpenSite = $(this).siblings().not('.closedTab');
hasClass
仅测试元素是否有类,not
将从与提供的选择器匹配的选定集合中删除元素。jQuery的hasClass()
方法返回布尔值(真/假),而不是元素。另外,要给它的参数是类名,而不是选择器本身
例如:
x.hasClass('error')代码>这样做容易得多:
$('#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');
});
if(!$('#foo').hasClass('bar')) {
...
}
这个!前面的条件表示false,适用于大多数编程语言。您还可以使用:
我不知道在最初发布的时候这是不是真的,但是兄弟姐妹方法允许选择符,所以减少了OP列出的内容
$(this).siblings(':not(.closedTab)');
哦-我犯了个愚蠢的错误-谢谢你的回答!这不适用于OP想要做的事情。它只是测试#foo
是否有类,它不会将匹配的元素集减少到有类的元素集。这种方法在我完全不同的情况下非常有效。谢谢。我所做的错事就是把它放在桌上!用大括号!($(this).hasClass())
这不起作用。