gpt4 book ai didi

javascript - jQuery hasClass 'is not a function'

转载 作者:太空宇宙 更新时间:2023-11-04 13:52:36 24 4
gpt4 key购买 nike

我想用 jQuery 检查 li 元素列表中的哪个 li 元素是事件的(它们代表一个菜单,我想检查哪个菜单项当前处于事件状态)。

因此,我将所有 li 元素存储在一个变量 myElements 中。然后我询问 myElements 的长度,并对它们应用一些样式更改,直到这里一切正常。显然这样我的变量 myElements 是一个节点列表,而不是一个数组,所以我声明了另一个变量; myElements_array,它包含与 myElements 相同的元素,并且是一个数组(也经过测试并且有效)。

然后我尝试检查 myElements_array 中的哪些元素具有“current-menu-item”类,但它不起作用并且 google chrome 控制台显示有一个错误:“Uncaught TypeError: myElements_array[j]”。 hasClass 不是函数'。有谁知道原因可能是什么?

<script type='text/javascript'>
var myElements = jQuery("#navbar > ul > li");
var count = myElements.length;

for (var i = 0; i < myElements.length; i++) {
myElements[i].style.width = (100/count)+'%';
}

var myElements_array = [];
for(var i = myElements.length; i--; myElements_array.unshift(myElements[i]));

var j = 0;
while (! myElements_array[j].hasClass('current-menu-parent') ) {
j++;
}
document.write(j);
</script>

最佳答案

问题是当您使用括号表示法时,您从数组中提取的索引是一个 DOM 节点,而不是一个 jQuery 对象。 DOM 没有 hasClass。

您可以存储 jQuery 版本或将其更改为 jQuery

while (! $(myElements_array[j]).hasClass('current-menu-parent') ) {

或者使用classList包含

while (! myElements_array[j].classList.contains('current-menu-parent') ) {

或者使用 eq() 而不是引用 DOM

while (! myElements_array.eq(j).hasClass('current-menu-parent') ) {

关于javascript - jQuery hasClass 'is not a function',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30630800/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com