【问题标题】:Different function on click after preventing default防止默认后点击不同的功能
【发布时间】:2017-12-18 08:05:37
【问题描述】:

此处的测试网站有一个没有下拉文件夹功能的移动菜单(800 像素宽或更小)。我希望移动导航菜单能够像在桌面上一样运行。

https://josh-unger-4lts.squarespace.com

标题文件夹的默认设置是打开其文件夹中的第一个链接,所以我阻止:

<script>  

$(document).ready(function() {
$('#mobileNav .mobile-folder>a').click(function(e) {
    e.preventDefault();

 });
 });
 </script>

我想在点击时显示“文件夹标题”内的隐藏页面链接。

我的代码在这里不起作用:

<script>
$(document).ready(function(){
$("#mobileNav .mobile-folder>a").click(function(){
$(this).find('.folder.external-link ul ').toggleClass("expand");
});
 });
  </script>

我的 CSS 用于隐藏页面链接并稍后在切换时显示:

.folder.external-link {display:none!important;}


.folder.external-link.expand {display:block!important;}

非常感谢任何帮助。

【问题讨论】:

    标签: jquery css toggle preventdefault


    【解决方案1】:

    ul 不是achild 元素,而是一个sibling

    所以你的代码应该是这样的(你也可以保留preventDefault()):

    <script>
    $(document).ready(function(){
        $("#mobileNav .mobile-folder>a").click(function(e){
           e.preventDefault();
           $(this).siblings('ul ').toggleClass("expand");
        });
    });
    </script>
    

    你的 CSS 应该针对 ul 类:

    .mobile-folder ul {display:none!important;}
    
    
    .mobile-folder ul.expand {display:block!important;}
    

    【讨论】:

    • 我换成了你的代码。看起来阻止默认设置现在不起作用。文件夹中的第一个链接现在打开。 @Temani Afif
    • @junger 我的错!复制/粘贴错误,现在再次检查:)
    • 我将 prevent 分离到我的原始脚本中,并保留了您的其余代码,它似乎可以正常工作!非常感谢@temani Aifif
    最近更新 更多