在 child() 上的 each() 中的 jQuery .hasClass() 不起作用"is not a function"



我正在尝试遍历div的子级,并找出哪个具有is-active类:

$('.childrenContainerSelector').children().each(child => console.log(child.hasClass('is-active'));

但是当我运行代码时,我得到了hasClass() is not a function错误。

如果我只运行:

$('.childrenContainerSelector').children() 

作为输出,我确实得到了正确的子项。

检查.each()的文档

回调函数的参数是(Integer index, Element element),因此您尝试在int上调用hasClass()

请注意,第二个arg是Element,而不是jQuery,所以如果您想使用jQuery方法,您需要将其包装为

$('.childrenContainerSelector').children().each((i, child) => 
console.log($(child).hasClass('is-active'))

或者,使用内置的classList方法

child.classList.contains("is-active")

如果你刚刚在学习is-active课程的孩子,为什么不使用

const activeChildren = $(".childrenContainerSelector > .is-active")
正如@Phil已经明确指出的,第一个参数是index。还要记住,.hasClass()是一个jQuery方法;它应用于jQuery集合,而不是DOM元素。因此,您可以使用$(this).hasClass()$(child).hasClass(),其中child是第二个元素。

要让所有孩子都上.is-active课,请使用:

$('.childrenContainerSelector > .is-active').each((i,child) => {
//your code
console.log( $(child).hasClass('is-active'); //You know it already has .. OR
console.log( %(this).hasClass('is-active');
});

或者:

$('.childrenContainerSelector').children().filter('.is-active').each((i,child) => {
//your code
});

相关内容

最新更新