Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.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 .slideUp()未按预期工作_Javascript_Jquery_Css_Twitter Bootstrap 3 - Fatal编程技术网

Javascript .slideUp()未按预期工作

Javascript .slideUp()未按预期工作,javascript,jquery,css,twitter-bootstrap-3,Javascript,Jquery,Css,Twitter Bootstrap 3,我有一个图标,可以触发向上滑动和向下滑动的效果,但在向下滑动后,如果我再次按下同一个图标,它将不再起作用 $(document).ready(function(){ $('.subcat-row').hide(); $("body").on("click",'.drop-subcat', function () { if($(this).children('i').attr('class','fa fa-toggle-down drop-down-icon'

我有一个图标,可以触发向上滑动和向下滑动的效果,但在向下滑动后,如果我再次按下同一个图标,它将不再起作用

$(document).ready(function(){ 
    $('.subcat-row').hide();

    $("body").on("click",'.drop-subcat', function () {

        if($(this).children('i').attr('class','fa fa-toggle-down drop-down-icon')){
            $(this).closest('.category-row').siblings('.subcat-row').slideDown(500);
            $(this).children('.drop-down-icon').attr('class', 'fa fa-toggle-up drop-down-icon');
        } else if( $(this).children('i').attr('class','fa fa-toggle-up drop-down-icon') ){
            $(this).closest('.category-row').siblings('.subcat-row').slideUp(500);
            $(this).children('.drop-down-icon').attr('class', 'fa fa-toggle-down drop-down-icon');
        }
    });
});
这是我做的JSFIDLE

不要这样做:
$(this).children('i').attr('class','fa-fa-toggle-down-down-icon')
,但使用保存状态

比较是否为元素设置了某个类的最简单方法是

但是我会使用
.data()

不要这样做:
$(this).children('I').attr('class','fa-fa-toggle-down-down-icon')
,但是用保存状态

比较是否为元素设置了某个类的最简单方法是

但是我会使用
.data()

不要这样做:
$(this).children('I').attr('class','fa-fa-toggle-down-down-icon')
,但是用保存状态

比较是否为元素设置了某个类的最简单方法是

但是我会使用
.data()

不要这样做:
$(this).children('I').attr('class','fa-fa-toggle-down-down-icon')
,但是用保存状态

比较是否为元素设置了某个类的最简单方法是


但是我会使用
.data()

您遇到的问题就是这个

.attr('class','fa fa-toggle-up drop-down-icon')
这将class属性设置为
“fa-fa-toggle-up下拉图标”
,因此在if语句中使用不正确(即不返回布尔值)。我想你的意思是测试这个类,所以使用hascalass(它返回一个布尔值,true或false),比如

$(document).ready(function(){ 
    $('.subcat-row').hide();

$("body").on("click",'.drop-subcat', function () {

        if($(this).children('i').hasClass('fa fa-toggle-down drop-down-icon')){

            $(this).closest('.category-row').siblings('.subcat-row').slideDown(500);
            $(this).children('.drop-down-icon').attr('class', 'fa fa-toggle-up drop-down-icon');

        }else if($(this).children('i').hasClass('fa fa-toggle-up drop-down-icon')){

            $(this).closest('.category-row').siblings('.subcat-row').slideUp(500);
            $(this).children('.drop-down-icon').attr('class', 'fa fa-toggle-down drop-down-icon');

        }

    });
});
如果事实上使用类,正如您希望添加一个类来指示它处于关闭状态,对于向上也一样,只需使用标准的jQuery类函数,即
addClass
hasClass
removeClass
toggleClass
,比使用
attr
容易得多

$(document).ready(function(){ 
    $('.subcat-row').hide();

$("body").on("click",'.drop-subcat', function () {   
        var childi =  $(this).children('i');
        if(childi.hasClass('fa-toggle-down')){    
            $(this).closest('.category-row').siblings('.subcat-row').slideDown(500);    
        }else if(childi.hasClass('fa-toggle-up')){    
            $(this).closest('.category-row').siblings('.subcat-row').slideUp(500);    
        }
       childi.toggleClass('fa-toggle-up fa-toggle-down');    
    });
});
或者对于变量缓存,从小代码的角度来看,通过字符串和方括号利用三元运算符和javascript方法调用,尝试以下方法

$(document).ready(function(){ 
    $('.subcat-row').hide();

$("body").on("click",'.drop-subcat', function () {   
        var self = $(this),
            childi = self.children('i'),
            slideDirection = childi.hasClass('fa-toggle-down') ? "slideDown":"slideUp";
        self.closest('.category-row').siblings('.subcat-row')[slideDirection](500);
        childi.toggleClass('fa-toggle-up fa-toggle-down');    
    });
});

你遇到的问题是这个

.attr('class','fa fa-toggle-up drop-down-icon')
这将class属性设置为
“fa-fa-toggle-up下拉图标”
,因此在if语句中使用不正确(即不返回布尔值)。我想你的意思是测试这个类,所以使用hascalass(它返回一个布尔值,true或false),比如

$(document).ready(function(){ 
    $('.subcat-row').hide();

$("body").on("click",'.drop-subcat', function () {

        if($(this).children('i').hasClass('fa fa-toggle-down drop-down-icon')){

            $(this).closest('.category-row').siblings('.subcat-row').slideDown(500);
            $(this).children('.drop-down-icon').attr('class', 'fa fa-toggle-up drop-down-icon');

        }else if($(this).children('i').hasClass('fa fa-toggle-up drop-down-icon')){

            $(this).closest('.category-row').siblings('.subcat-row').slideUp(500);
            $(this).children('.drop-down-icon').attr('class', 'fa fa-toggle-down drop-down-icon');

        }

    });
});
如果事实上使用类,正如您希望添加一个类来指示它处于关闭状态,对于向上也一样,只需使用标准的jQuery类函数,即
addClass
hasClass
removeClass
toggleClass
,比使用
attr
容易得多

$(document).ready(function(){ 
    $('.subcat-row').hide();

$("body").on("click",'.drop-subcat', function () {   
        var childi =  $(this).children('i');
        if(childi.hasClass('fa-toggle-down')){    
            $(this).closest('.category-row').siblings('.subcat-row').slideDown(500);    
        }else if(childi.hasClass('fa-toggle-up')){    
            $(this).closest('.category-row').siblings('.subcat-row').slideUp(500);    
        }
       childi.toggleClass('fa-toggle-up fa-toggle-down');    
    });
});
或者对于变量缓存,从小代码的角度来看,通过字符串和方括号利用三元运算符和javascript方法调用,尝试以下方法

$(document).ready(function(){ 
    $('.subcat-row').hide();

$("body").on("click",'.drop-subcat', function () {   
        var self = $(this),
            childi = self.children('i'),
            slideDirection = childi.hasClass('fa-toggle-down') ? "slideDown":"slideUp";
        self.closest('.category-row').siblings('.subcat-row')[slideDirection](500);
        childi.toggleClass('fa-toggle-up fa-toggle-down');    
    });
});

你遇到的问题是这个

.attr('class','fa fa-toggle-up drop-down-icon')
这将class属性设置为
“fa-fa-toggle-up下拉图标”
,因此在if语句中使用不正确(即不返回布尔值)。我想你的意思是测试这个类,所以使用hascalass(它返回一个布尔值,true或false),比如

$(document).ready(function(){ 
    $('.subcat-row').hide();

$("body").on("click",'.drop-subcat', function () {

        if($(this).children('i').hasClass('fa fa-toggle-down drop-down-icon')){

            $(this).closest('.category-row').siblings('.subcat-row').slideDown(500);
            $(this).children('.drop-down-icon').attr('class', 'fa fa-toggle-up drop-down-icon');

        }else if($(this).children('i').hasClass('fa fa-toggle-up drop-down-icon')){

            $(this).closest('.category-row').siblings('.subcat-row').slideUp(500);
            $(this).children('.drop-down-icon').attr('class', 'fa fa-toggle-down drop-down-icon');

        }

    });
});
如果事实上使用类,正如您希望添加一个类来指示它处于关闭状态,对于向上也一样,只需使用标准的jQuery类函数,即
addClass
hasClass
removeClass
toggleClass
,比使用
attr
容易得多

$(document).ready(function(){ 
    $('.subcat-row').hide();

$("body").on("click",'.drop-subcat', function () {   
        var childi =  $(this).children('i');
        if(childi.hasClass('fa-toggle-down')){    
            $(this).closest('.category-row').siblings('.subcat-row').slideDown(500);    
        }else if(childi.hasClass('fa-toggle-up')){    
            $(this).closest('.category-row').siblings('.subcat-row').slideUp(500);    
        }
       childi.toggleClass('fa-toggle-up fa-toggle-down');    
    });
});
或者对于变量缓存,从小代码的角度来看,通过字符串和方括号利用三元运算符和javascript方法调用,尝试以下方法

$(document).ready(function(){ 
    $('.subcat-row').hide();

$("body").on("click",'.drop-subcat', function () {   
        var self = $(this),
            childi = self.children('i'),
            slideDirection = childi.hasClass('fa-toggle-down') ? "slideDown":"slideUp";
        self.closest('.category-row').siblings('.subcat-row')[slideDirection](500);
        childi.toggleClass('fa-toggle-up fa-toggle-down');    
    });
});

你遇到的问题是这个

.attr('class','fa fa-toggle-up drop-down-icon')
这将class属性设置为
“fa-fa-toggle-up下拉图标”
,因此在if语句中使用不正确(即不返回布尔值)。我想你的意思是测试这个类,所以使用hascalass(它返回一个布尔值,true或false),比如

$(document).ready(function(){ 
    $('.subcat-row').hide();

$("body").on("click",'.drop-subcat', function () {

        if($(this).children('i').hasClass('fa fa-toggle-down drop-down-icon')){

            $(this).closest('.category-row').siblings('.subcat-row').slideDown(500);
            $(this).children('.drop-down-icon').attr('class', 'fa fa-toggle-up drop-down-icon');

        }else if($(this).children('i').hasClass('fa fa-toggle-up drop-down-icon')){

            $(this).closest('.category-row').siblings('.subcat-row').slideUp(500);
            $(this).children('.drop-down-icon').attr('class', 'fa fa-toggle-down drop-down-icon');

        }

    });
});
如果事实上使用类,正如您希望添加一个类来指示它处于关闭状态,对于向上也一样,只需使用标准的jQuery类函数,即
addClass
hasClass
removeClass
toggleClass
,比使用
attr
容易得多

$(document).ready(function(){ 
    $('.subcat-row').hide();

$("body").on("click",'.drop-subcat', function () {   
        var childi =  $(this).children('i');
        if(childi.hasClass('fa-toggle-down')){    
            $(this).closest('.category-row').siblings('.subcat-row').slideDown(500);    
        }else if(childi.hasClass('fa-toggle-up')){    
            $(this).closest('.category-row').siblings('.subcat-row').slideUp(500);    
        }
       childi.toggleClass('fa-toggle-up fa-toggle-down');    
    });
});
或者对于变量缓存,从小代码的角度来看,通过字符串和方括号利用三元运算符和javascript方法调用,尝试以下方法

$(document).ready(function(){ 
    $('.subcat-row').hide();

$("body").on("click",'.drop-subcat', function () {   
        var self = $(this),
            childi = self.children('i'),
            slideDirection = childi.hasClass('fa-toggle-down') ? "slideDown":"slideUp";
        self.closest('.category-row').siblings('.subcat-row')[slideDirection](500);
        childi.toggleClass('fa-toggle-up fa-toggle-down');    
    });
});

我不认为你的
if
子句做了你认为他们做的事情。(他们正在设置类,而不是测试它们。)我向您保证
slideUp
完全按照预期工作;问题出在你的逻辑上。Bootstrap有一个折叠插件,它已经做到了这一点;你不使用它有什么原因吗?我不认为你的
,如果
子句在做你认为它们在做的事情。(他们正在设置类,而不是测试它们。)我向您保证
slideUp
完全按照预期工作;问题出在你的逻辑上。Bootstrap有一个折叠插件,它已经做到了这一点;你不使用它有什么原因吗?我不认为你的
,如果
子句在做你认为它们在做的事情。(他们正在设置类,而不是测试它们。)我向您保证
slideUp
完全按照预期工作;问题出在你的逻辑上。Bootstrap有一个折叠插件,它已经做到了这一点;你不使用它有什么原因吗?我不认为你的
,如果
子句在做你认为它们在做的事情。(他们正在设置类,而不是测试它们。)我向您保证
slideUp
完全按照预期工作;问题出在你的逻辑上。Bootstrap有一个折叠插件,它已经做到了这一点;你不使用它有什么原因吗?