Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/400.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未定义JQuery-untoggle-removeClass_Javascript_Jquery_Html - Fatal编程技术网

Javascript 未定义JQuery-untoggle-removeClass

Javascript 未定义JQuery-untoggle-removeClass,javascript,jquery,html,Javascript,Jquery,Html,我有一个带有按钮的简单页面。单击按钮后,文本将使用“切换”显示在此按钮的正下方 这项工作是正确的,但它不会改变其他部分/按钮。所以我想要的不仅仅是点击切换按钮下的部分,还要不切换另一个切换的部分 我在所有部分上添加了一个循环,该循环在单击后立即执行,它应该隐藏所有部分,然后执行它必须执行的操作-显示此部分 ncaught TypeError:acc.removeClass不是函数 您知道问题出在哪里吗?将acc包装到$acc中-它不是一个jquery对象。将acc包装到$acc中-它不是一个jq

我有一个带有按钮的简单页面。单击按钮后,文本将使用“切换”显示在此按钮的正下方

这项工作是正确的,但它不会改变其他部分/按钮。所以我想要的不仅仅是点击切换按钮下的部分,还要不切换另一个切换的部分

我在所有部分上添加了一个循环,该循环在单击后立即执行,它应该隐藏所有部分,然后执行它必须执行的操作-显示此部分

ncaught TypeError:acc.removeClass不是函数

您知道问题出在哪里吗?

将acc包装到$acc中-它不是一个jquery对象。

将acc包装到$acc中-它不是一个jquery对象。

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         
   });
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不是任何地方的对象。