Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/389.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 在slideToggle中的span onClick内更改html_Javascript_Jquery_Slidetoggle - Fatal编程技术网

Javascript 在slideToggle中的span onClick内更改html

Javascript 在slideToggle中的span onClick内更改html,javascript,jquery,slidetoggle,Javascript,Jquery,Slidetoggle,我希望在单击标题时显示ul的内容,但同时更改该标题旁边的图标。默认情况下,图标为向下箭头,单击时ul应滑开,图标应变为向上箭头,再次单击时应变为向下箭头等 我可以让这种情况发生一次,但一旦标题被点击两次,只是停留为一个向上箭头,我想再次更改为向下箭头等。有人能告诉我正确的方向吗 谢谢 我的HTML代码: <h4 class="mobileDrop">Find Your Way Around <span><i class="fa fa-caret-down linkI

我希望在单击标题时显示ul的内容,但同时更改该标题旁边的图标。默认情况下,图标为向下箭头,单击时ul应滑开,图标应变为向上箭头,再次单击时应变为向下箭头等

我可以让这种情况发生一次,但一旦标题被点击两次,只是停留为一个向上箭头,我想再次更改为向下箭头等。有人能告诉我正确的方向吗

谢谢

我的HTML代码:

<h4 class="mobileDrop">Find Your Way Around <span><i class="fa fa-caret-down linkIcon"></i></span></h4>

<ul class="footerNav">
     <li><a href="#">1st List Item</a></li>
     <li><a href="#">2nd List Item</a></li>
     <li><a href="#">3rd List Item</a></li>
</ul>
我的代码JS:

// footer specifics
$( ".footerNav" ).hide();
// toggle on click
$( ".mobileDrop" ).click(function() {
    $( ".footerNav" ).slideToggle( 400, function()  {
        $( ".mobileDrop span" ).html( '<i class="fa fa-caret-up linkIcon"></i>' );  
    });
});
工作小提琴

假设默认情况下只有一个插入符号类:

// footer specifics
$( ".footerNav" ).hide();
// toggle on click
$( ".mobileDrop" ).click(function() {
$( ".footerNav" ).slideToggle( 400, function()  {
    $( ".mobileDrop span i" ).toggleClass('fa-caret-up').toggleClass('fa-caret-down');  
});
});

您不需要更改html。只需切换类

$( ".mobileDrop" ).click(function() {
    var drop = $(this);
    $( ".footerNav" ).slideToggle( 400, function()  {
        drop.find('.fa.linkIcon').toggleClass('fa-caret-up fa-caret-down');
    });
});
试试这个:

$( ".footerNav" ).slideToggle( 400, function()  {
    var linkIcon = $(".linkIcon");
    if (linkIcon.hasClass('fa-caret-down')) {
        linkIcon.removeClass('fa-caret-down').addClass('fa-caret-up');
    } else {
        linkIcon.removeClass('fa-caret-up').addClass('fa-caret-down');
    }
});

您只需在类之间切换:

$( ".mobileDrop span i" ).toggleClass('fa-caret-up ','fa-caret-down');
他们将根据单击的时间间隔自动切换类

参考:
至于显示/不显示菜单,您可以使用:

$( ".mobileDrop" ).click(function() {
    $(".footerNav").toggle();
});

至于箭头,您可以为不同的箭头使用两个类,或者每次使用toggleClass更改背景图像css,谢谢faby,但这与我发布的代码基本相同。我有下拉菜单,但我需要的图标是一个向下箭头时,页面加载,因此在跨度中的图标的原因开始,然后当点击图标变为向上箭头,然后再次点击图标变为向下箭头等。我已经更新了答案。。看那。。对不起,发错了
$( ".mobileDrop" ).click(function() {
    $(".footerNav").toggle();
});