Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/455.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在jQuery:not和hasClass()中使用来获取没有类的特定元素_Javascript_Jquery_Html_Accordion - Fatal编程技术网

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())
这不起作用。