Javascript 未定义JQuery-untoggle-removeClass
我有一个带有按钮的简单页面。单击按钮后,文本将使用“切换”显示在此按钮的正下方 这项工作是正确的,但它不会改变其他部分/按钮。所以我想要的不仅仅是点击切换按钮下的部分,还要不切换另一个切换的部分 我在所有部分上添加了一个循环,该循环在单击后立即执行,它应该隐藏所有部分,然后执行它必须执行的操作-显示此部分 ncaught TypeError:acc.removeClass不是函数 您知道问题出在哪里吗?将acc包装到$acc中-它不是一个jquery对象。将acc包装到$acc中-它不是一个jquery对象。removeClass不是一个本机DOM元素方法,因此您得到了错误。将DOM元素转换为jQuery对象,然后可以使用这些方法 因为您已经有了jQuery对象,所以可以像这样直接使用它Javascript 未定义JQuery-untoggle-removeClass,javascript,jquery,html,Javascript,Jquery,Html,我有一个带有按钮的简单页面。单击按钮后,文本将使用“切换”显示在此按钮的正下方 这项工作是正确的,但它不会改变其他部分/按钮。所以我想要的不仅仅是点击切换按钮下的部分,还要不切换另一个切换的部分 我在所有部分上添加了一个循环,该循环在单击后立即执行,它应该隐藏所有部分,然后执行它必须执行的操作-显示此部分 ncaught TypeError:acc.removeClass不是函数 您知道问题出在哪里吗?将acc包装到$acc中-它不是一个jquery对象。将acc包装到$acc中-它不是一个jq
accs.removeClass('active'); //remove class from element
accs.next().removeClass('show'); //Remove class from sibling
而不是
$.each(accs,function(acc){
acc.removeClass('active'); # NOT WORKING
acc.nextElementSibling.classList.remove('show'); # NOT WORKING
});
removeClass不是本机DOM元素方法,因此会出现错误。将DOM元素转换为jQuery对象,然后可以使用这些方法
因为您已经有了jQuery对象,所以可以像这样直接使用它
accs.removeClass('active'); //remove class from element
accs.next().removeClass('show'); //Remove class from sibling
而不是
$.each(accs,function(acc){
acc.removeClass('active'); # NOT WORKING
acc.nextElementSibling.classList.remove('show'); # NOT WORKING
});
我希望下面的代码将工作
$(document).ready(function(){
var accs = $('.accordion');
$('.accordion').on('click',function(){
accs.each(function(index){
$(this).removeClass('active');
$(this).next().removeClass("show");
});
$(this).toggleClass('active');
$(this).next().toggleClass("show");
})
});
我希望下面的代码将工作
$(document).ready(function(){
var accs = $('.accordion');
$('.accordion').on('click',function(){
accs.each(function(index){
$(this).removeClass('active');
$(this).next().removeClass("show");
});
$(this).toggleClass('active');
$(this).next().toggleClass("show");
})
});
问题在于acc是每个函数中元素的索引。您需要使用$this.eqacc或accs.eqacc
现在,您将整数索引视为对象。这是行不通的。问题在于acc是每个函数中元素的索引。您需要使用$this.eqacc或accs.eqacc
现在,您将整数索引视为对象。那不行。下一个sibling找不到怎么办?@Rorymcrossan,如果遇到错误,下一个语句会执行吗?这很有意义。我假设OP已经在隔离中测试了每一行,那么下一个屏蔽没有找到呢?@Rorymcrossan,如果遇到错误,下一个语句会执行吗?这是有意义的。我假设OP已经在isolationacc.removeClass->$acc中测试了每条线路。removeClass@RoryMcCrossanacc在foreach函数中的对象索引不是以他使用它的方式吗?它应该是accs.eqacc…即使在$.each函数中,第一个参数是键或索引值。他的函数只有一个参数。请参阅该页上的第一个示例或查看fiddle:acc.removeClass->$acc。removeClass@RoryMcCrossanacc在foreach函数中的对象索引不是以他使用它的方式吗?它应该是accs.eqacc…即使在$.each函数中,第一个参数是键或索引值。他的函数只有一个参数。查看该页上的第一个示例或查看fiddle:from-如果在两个li元素之间添加空格,结果将是未定义的。这与他使用它的方式不同!它将显示为$0,$1。acc不是任何地方的对象。从-如果在两个li元素之间添加空格,结果将是未定义的。这与他使用它的方式不同!它将显示为$0,$1。acc不是任何地方的对象。