jQuery hasClass无法遍历子级

Ale*_*ite 2 javascript wordpress jquery

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

的HTML

<ul>
    <li class="active"></li>
    <li></li>
</ul>
Run Code Online (Sandbox Code Playgroud)

JS

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

for (i = 0; i < authors.length; i++) { 
    var currentAuthor = authors[i];
    currentAuthor.hasClass("active");
}
Run Code Online (Sandbox Code Playgroud)

Tyl*_*per 5

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

var authors = jQuery("li");

authors.each(function() {
    if (jQuery(this).hasClass("active")){
        //Do stuff
    }
});
Run Code Online (Sandbox Code Playgroud)

话虽这么说,为什么只选择所有活动li元素,然后选择所有元素然后检查它们是否具有活动类呢?

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

$active.each(function() {
    //Do stuff
});
Run Code Online (Sandbox Code Playgroud)

或者根据您的工作,您甚至可能不需要 each()

// Turn all active li elements red
var $active = jQuery("li.active");
$active.css("color", "red");
Run Code Online (Sandbox Code Playgroud)