Javascript jQuery hasClass不';我不想在孩子们中间绕圈子

Javascript jQuery hasClass不';我不想在孩子们中间绕圈子,javascript,jquery,wordpress,Javascript,Jquery,Wordpress,我试图寻找某些元素,如果它们在Wordpress小部件中包含某个类。但是我不明白的是为什么authors.hasClass()可以,但是currentAuthor.hasClass()抛出一个错误,说它不是一个函数 HTML <ul> <li class="active"></li> <li></li> </ul> JS var authors = jQuery("li"); authors.ha

我试图寻找某些元素,如果它们在Wordpress小部件中包含某个类。但是我不明白的是为什么
authors.hasClass()
可以,但是
currentAuthor.hasClass()
抛出一个错误,说它不是一个函数

HTML

<ul>
    <li class="active"></li>
    <li></li>
</ul>
JS

var authors = jQuery("li");
authors.hasClass("active");

for (i = 0; i < authors.length; i++) { 
    var currentAuthor = authors[i];
    currentAuthor.hasClass("active");
}
var作者=jQuery(“li”);
作者:hasClass(“活动”);
对于(i=0;i
Beacuse
authors[i]
返回的不是jQuery对象,而是原始DOM元素(因此它没有像
hasClass这样的jQuery方法)。
根据jQuery文档:

jQuery对象是围绕一个或多个DOM的类似数组的包装器 元素。获取对实际DOM元素的引用(而不是 jQuery对象),您有两个选项。第一(也是最快的) 方法是使用数组表示法

要解决您的问题,必须将返回的元素包装到jQuery对象中,如下所示:

var currentAuthor=$(作者[i])

或使用方法从集合中获取jQuery对象:


var currentAuthor=authors.eq(i)

通过将对象作为数组循环,您将它们视为标准JavaScript对象。因为
hasClass()
是一个jQuery方法,所以它只能用于jQuery对象。您可以使用jQuery的
.each()
,其中
jQuery(this)
引用循环中的当前元素

var authors = jQuery("li");

authors.each(function() {
    if (jQuery(this).hasClass("active")){
        //Do stuff
    }
});
也就是说,为什么选择所有
li
元素,然后检查它们是否具有活动类,而您只需选择所有活动元素

var $active = jQuery("li.active");

$active.each(function() {
    //Do stuff
});
或者,根据您正在做的事情,您甚至可能不需要
each()

// Turn all active li elements red
var $active = jQuery("li.active");
$active.css("color", "red");