如何在jQuery中使用:not和hasClass()来获取没有类的特定元素

我有这样的代码行:

$('#sitesAccordion .groupOfSites').click(function() { var lastOpenSite = $(this).siblings().hasClass(':not(.closedTab)'); console.log(lastOpenSite); }); 

我得到“假”而不是得到其他元素之一(假设有一个 – 必须有)。 我想这个问题是与:

 .hasClass(':not(.closedTab)'); 

问题是什么?

我的目的是创build我自己的手风琴(不使用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'); }); 

这是最好的方法吗? 谢谢阿隆

改用not函数:

 var lastOpenSite = $(this).siblings().not('.closedTab'); 

hasClass只testing一个元素是否有一个类, not不会从与提供的select器匹配的选定集中移除元素。

这样做容易得多:

 if(!$('#foo').hasClass('bar')) { ... } 

那! 在标准的前面意味着假的,在大多数编程语言中工作。

jQuery的hasClass()方法返回一个布尔值(true / false)而不是元素。 另外,给它的参数是类名,而不是select器。

例如: x.hasClass('error');

你也可以使用jQuery – 是(select器)方法 :

 var lastOpenSite = $(this).siblings().is(':not(.closedTab)'); 

我不知道在原来的发布时这是否是真实的,但兄弟姐妹的方法允许select器,所以减lessOP列出的工作。

  $(this).siblings(':not(.closedTab)');