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

Alo*_*lon 67 html javascript jquery accordion

我有这行代码:

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

我得到"假"而不是获得其他元素之一(假设有一个 - 并且必须有).我猜问题是:

.hasClass(':not(.closedTab)');
Run Code Online (Sandbox Code Playgroud)

问题是什么?

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


});
Run Code Online (Sandbox Code Playgroud)

这是最好的方法吗?谢谢,Alon

Den*_*nis 109

请改用此not功能:

var lastOpenSite = $(this).siblings().not('.closedTab');
Run Code Online (Sandbox Code Playgroud)

hasClass仅测试元素是否具有类,not将从与所提供的选择器匹配的所选集合中删除元素.


Qar*_*Qar 89

这样做要容易得多:

if(!$('#foo').hasClass('bar')) { 
  ...
}
Run Code Online (Sandbox Code Playgroud)

的!在标准前面表示错误,适用于大多数编程语言.

  • 这种方式在我完全不同的情况下非常好用.谢谢. (4认同)

tec*_*bar 7

jQuery的hasClass()方法返回一个布尔值(true/false)而不是一个元素.此外,要赋予它的参数是类名而不是选择器.

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