如何在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)');