我有一个带按钮的简单页面。点击该按钮后,文本会显示在此按钮下方toggle
。
这项工作是正确的,但它没有“解开”其他部分/按钮。所以我想要的是点击不仅切换按钮下的部分,而且还解开另一个切换部分。
我在点击后立即执行的所有部分都添加了一个循环,它应该“隐藏”所有部分,然后执行它必须执行的操作 - 显示this
部分。
ncaught TypeError:acc.removeClass不是函数
$(document).ready(function(){
var accs = $('.accordion');
$('.accordion').on('click',function(){
$.each(accs,function(acc){
acc.removeClass('active'); # NOT WORKING
acc.nextElementSibling.classList.remove('show'); # NOT WORKING
});
this.classList.toggle('active'); # WORKING
this.nextElementSibling.classList.toggle("show"); # WORKING
})
});
你知道问题出在哪里吗?
答案 0 :(得分:4)
将$(acc)
包装到box-sizing: border-box;
中 - 它不是那里的jquery对象。
答案 1 :(得分:3)
accs.removeClass('active'); //remove class from element
accs.next().removeClass('show'); //Remove class from sibling
不是本机DOM元素方法,因此您收到错误。将DOM元素转换为jQuery对象,然后就可以使用这些方法。
由于你已经有jQuery对象直接使用它,如
$.each(accs,function(acc){
acc.removeClass('active'); # NOT WORKING
acc.nextElementSibling.classList.remove('show'); # NOT WORKING
});
而不是
from django.db.models.functions import Coalesce
qs = Goods.objects.annotate(
qty_in=Sum(Coalesce(in_records__quantity, 0)),
qty_out=Sum(Coalesce(out_records__quantity, 0))
)
答案 2 :(得分:2)
我希望下面的代码可以正常工作
$(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");
})
});
答案 3 :(得分:0)
问题是acc
是每个函数中元素的索引。您需要使用$(this).eq(acc)
或accs.eq(acc).
$(document).ready(function(){
var accs = $('.accordion');
$('.accordion').on('click',function(){
$.each(accs,function(index){
accs.eq(index).removeClass("active");
accs.eq(index).classList.remove("show"); //you don't need next because this each function will remove the class 'active' and 'show' from every accs element regardless
});
$(this).toggleClass('active');
$(this).next().toggleClass("show");
})
});
现在你将整数(索引)视为一个对象。那不行。