Javascript jQuery hasClass不';我不想在孩子们中间绕圈子
我试图寻找某些元素,如果它们在Wordpress小部件中包含某个类。但是我不明白的是为什么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
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
Beacuseauthors[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");