javascript - 简单的 jQuery 切换到 $ ("html, body").css( {"overflow": "hidden"}); when opened and then switch to "scroll" when closed

标签 javascript jquery css

切换器的工作方式与您预期的一样——它是通过将一个类附加到要打开的元素集来提供支持的。正如您可能在下面所说的那样:

问题是.. 你可能可以从我的尝试中看出,我有三个元素可以打开和关闭点击 .isilnk ' .isi__wrapper' 和 .isi__expander 我只是想设置它,当元素展开或切换打开时。 eg. if ($(".isi").hasClass("isi--show-isi")) { 只需设置 overflow: hiddenhtml, body 并且当它关闭或未打开或上面没有类时,只需设置 html, body { overflow: scroll;

我在下面的所有尝试都不允许它同时适用于打开和关闭只有一个或另一个。因此,目前它在元素切换打开时有效,但当它关闭时,html, body 溢出不会返回滚动并且用户无法浏览该站点。

$(document).ready(function(){

    $('.isilnk').on('click', function(){
        $('.isi').addClass('isi--show-isi');
        $("html, body").css({"overflow": "hidden"});  
    }); 

    if ($(".isi").hasClass("isi--show-isi")) {
      $("isi__wrapper").css("overflow","scroll");
      $("html, body").css({"overflow": "scroll"});  
    }
    else { 
      $("html, body").css({"overflow": "scroll"});  
    }
    $('.isi__expander').click(function() {
       $("html, body").css({"overflow": "hidden"});  
    });

    $('.isi__wrapper').click(function() { 
        $("html, body").css({"overflow": "scroll"});  
    }
});

最佳答案

作为一个猜测:

$(document).ready(function(){

    $('.isilnk').on('click', function(){
        $('.isi').toggleClass('isi--show-isi');
        $("html, body").css({"overflow": "hidden"});  
        setCSS();
    }); 

    $('.isi__expander').click(function() {
      ('.isi').addClass('isi--show-isi');
      setCSS();
    });

    $('.isi__wrapper').click(function() { 
      ('.isi').removeClass('isi--show-isi');
      setCSS();
    }
});

function setCSS() {
    if ($(".isi").hasClass("isi--show-isi")) {
      $("isi__wrapper").css("overflow","scroll");
      $("html, body").css({"overflow": "scroll"});  
    }
    else { 
      $("html, body").css({"overflow": "scroll"});  
    }
}

关于javascript - 简单的 jQuery 切换到 $ ("html, body").css( {"overflow": "hidden"}); when opened and then switch to "scroll" when closed,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34518175/

相关文章:

javascript - 在自定义 JQuery 验证规则中读取非元素值的正确方法是什么?

javascript - 样式选择元素 (jQuery)

javascript - 使用 Material Design Lite 复选框突出显示整个表格行

jquery - 使用 jQuery UI 对元素进行分组和拖动组

css - Flash 播放器不适合屏幕

css - 高度/宽度 : 100% and --webkit-fill-available 之间有什么区别

css - 纯 CSS 灯箱问题

javascript - 背景图像 - 让图像运行到其他 div 中吗?

jquery - 使用 jquery focus 清空文本字段

jquery - 如果选择选项文本长度大于 10,则修剪 jQuery