gpt4 book ai didi

javascript - 在使用 JS 触发某个函数后,我如何忽略某个代码块?例如

转载 作者:行者123 更新时间:2023-11-29 21:27:51 26 4
gpt4 key购买 nike

我有一个模糊的问题,我希望有人能帮助我。不幸的是,我对 JavaScript 还没有那么多的经验,并且正在慢慢地(努力地)学习它。

无论如何,我的问题是我有一个固定的菜单栏,它使用滚动切换方法展开。同一个菜单栏还有一个功能,当您向下滚动时它会隐藏,而当您向上滚动时又会再次显示(节省屏幕空间)。

这里的问题是,当菜单展开时,我不希望它在向下滚动时消失。

现在我在想是否有某种方式可以轻松编写类似 [如果您使用滚动切换方法触发该功能 > 忽略告诉您在向下滚动时隐藏的代码。

我敢肯定这是一件非常简单的事情,但我似乎不太明白。

诚然,我没有编写隐藏菜单功能的代码,但根据我在 JS 中学到的一些小东西对其进行了一些细微的更改。

感谢您的帮助!

jQuery(document).ready(function() {

jQuery(".toc").click(function() {

$(".table-holder").css("height", $(".sidebar ul").height());
jQuery(".sidebar ul").slideToggle({
progress: function() {

$(".table-holder").css("height", $(".sidebar ul").height());
}

});

});

});


//HIDE MENU .SIDEBAR WHEN SCROLLING A LITTLE DOWNWARDS (CAN WE IGNORE THIS WHEN ABOVE FIRES? IS THAT THE PRACTICAL METHOD)

var didScroll;
var lastScrollTop = 0;
var delta = 5;
var navbarHeight = $('.sidebar').outerHeight();

$(window).scroll(function(event){
didScroll = true;
});

setInterval(function() {
if (didScroll) {
hasScrolled();
didScroll = false;
}
}, 250);

function hasScrolled() {
var st = $(this).scrollTop();

// Make sure they scroll more than delta
if(Math.abs(lastScrollTop - st) <= delta)
return;

// If they scrolled down and are past the navbar, add class .nav-up.
// This is necessary so you never see what is "behind" the navbar.
if (st > lastScrollTop && st > navbarHeight){
// Scroll Down
$('.sidebar').hide();
} else {
// Scroll Up
if(st + $(window).height() < $(document).height()) {
$('.sidebar').show();
}
}

lastScrollTop = st;
}
body {
background-color: #ddd;
height: 1000px
}

li {
list-style: none;
text-align: center;
background-color: orange;
}

.sidebar {
position: fixed;
top: 0;
height: 50px;
width: 100%;
background-color: orange;
z-index: 1;
}
.sidebar ul {
display: none;
}

.table-holder {
height: 40px;
}

.wrapper {
position: relative;
top: 70px;
}

.content {
margin: 30px auto;
width: 75%;
height: 300px;
border: 1px solid black;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<body>
<!--Side Bar-->
<div class="sidebar">

<!--Table of Contents-->
<div class="toc">
<p>Table of Contents</p>
</div>

<ul>
<li>1</li>
<li>2</li>
<li>3</li>
<li>4</li>
<li>5</li>
</ul>

</div><!--Side Bar Close-->

<!--Table Holder Div to Push Content Down-->
<div class="table-holder"></div>

<!--Content Divs-->
<div class="wrapper">
<div class="content">
</div>

<div class="content">
</div>

<div class="content">
</div>

<div class="content">
</div>
</div>
</body>

最佳答案

创建一个变量来存储您的菜单和条件语句的状态,以控制您在菜单关闭或打开时要执行的操作。

例如:

var menuState = "Hide";

if(menuState == "Hide") {
function hide() { ... }
}

这里是解决方案:

https://jsfiddle.net/73z9p9uk/1/

var open = false;

jQuery(document).ready(function() {

jQuery(".toc").click(function() {
!open ? open = true : open = false;
$(".table-holder").css("height", $(".sidebar ul").height());
jQuery(".sidebar ul").slideToggle({
progress: function() {

$(".table-holder").css("height", $(".sidebar ul").height());
}

});

});

});


//HIDE MENU .SIDEBAR WHEN SCROLLING A LITTLE DOWNWARDS (CAN WE IGNORE THIS WHEN ABOVE FIRES? IS THAT THE PRACTICAL METHOD)

var didScroll;
var lastScrollTop = 0;
var delta = 5;
var navbarHeight = $('.sidebar').outerHeight();


$(window).scroll(function(event){
didScroll = true;
});

setInterval(function() {
if (didScroll) {
hasScrolled();
didScroll = false;
}
}, 250);

function hasScrolled() {
if(!open) {
var st = $(this).scrollTop();

// Make sure they scroll more than delta
if(Math.abs(lastScrollTop - st) <= delta)
return;

// If they scrolled down and are past the navbar, add class .nav-up.
// This is necessary so you never see what is "behind" the navbar.
if (st > lastScrollTop && st > navbarHeight){
// Scroll Down
$('.sidebar').hide();
} else {
// Scroll Up
if(st + $(window).height() < $(document).height()) {
$('.sidebar').show();
}
}

lastScrollTop = st;
}
}

关于javascript - 在使用 JS 触发某个函数后,我如何忽略某个代码块?例如,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37094462/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com