Show or hide side menu depending on when a div reaches the top of the

I have a side menu that opens when a specific div reaches the top of the window.

The menu includes a toggle button for opening and closing it.

However, I am encountering an issue where the script keeps closing the menu on scroll even after manually opening it using the toggle button.

Is there a way to only open and close the menu once the div has passed the top of the screen, rather than the script continuously checking?

Here is my current script:

var stickyTop = $('#section1').offset().top;

$(window).on('scroll', function() {
        if ($(window).scrollTop() >= stickyTop) {
            $('.be-toggled').removeClass('toggled');
        } else {
            $('.be-toggled').addClass('toggled');
        }
    });
});

Answer №1

Transfer your function into a variable so that you can easily call $(window).off() to stop the window from listening to the scroll event. While my example may not align perfectly with your specific needs, it serves as a demonstration of the on/off concept when utilizing a function.

var stickyTop = $('#section1').offset().top;

var doToggle = function() {
  if ($(window).scrollTop() >= stickyTop) {
      $('.be-toggled').removeClass('toggled');
  } else {
      $('.be-toggled').addClass('toggled');
  }
  $(window).off( 'scroll', doToggle);
});

$(window).on( 'scroll', doToggle);

Similar questions

If you have not found the answer to your question or you are interested in this topic, then look at other similar questions below or use the search

Tips on eliminating the gap between the dropdown menu in Firefox browser

After testing in Chrome and seeing no issues, I noticed that the input field's position changes and there is spacing between the dropdowns when opening in Firefox. View in Firefox browser: https://i.stack.imgur.com/WYpuy.png View in Chrome browser: ...

ngPrime table column selection and data extraction

I am looking to extract multiple columns from a table. Can anyone suggest the best approach for this? Does NGPrime offer any functionality for achieving this task? Appreciate your help! ...

Creating a handshake process for hybi-17

I am currently in the process of creating the handshake for the websocket hybi-17 protocol. I have been referencing the draft available at . Based on the guidelines provided in the draft, I have developed the following code snippets for both the client (us ...

Refresh a particular element using javascript

I'm new to Javascript and I am trying to refresh a specific element (a div) using only Javascript when that div is clicked. I came across the location.reload() function, but it reloads the entire page which doesn't fit my requirements. Upon clic ...

What is the best way to extract the "Standard" timezone string from a given moment object?

Currently, I am tackling a project in asp.net that involves managing dates and times between a server database and client-side widgets. In order to simplify this process, I have decided to utilize moment.js. While examining my moment object during debuggi ...

Preventing Event Propagation in Jquery is Quite a Challenge

I'm feeling a bit perplexed. I have a list of names with checkboxes next to them, and this list is generated dynamically after making a request to the backend. The issue is that every time I click on a checkbox, it immediately becomes unchecked. I no ...

Refresh the vue-chart component in a nuxt.js application

I'm currently working on a nuxt project and I need to incorporate some charts into it. I'm using vue-chartjs as a plugin for this purpose. However, the issue I'm facing is that the chart data is fetched after the chart has already been drawn ...

Having trouble rendering arrays and objects in Node, Express, and Jade?

//What is currently being passed to the Jade template exports.displayList = function(req, res){ res.render('report', {title: 'Custom Reports', rpts:[{uri:'/reports/allocation', title:'Allocation Report' ...

The function in which the "useStyles" React Hook is invoked is not a valid React function component or a defined custom React Hook function

After integrating Material UI with React, I encountered the following error message: React Hook "useStyles" is called in function "appBar" which is neither a React function component nor a custom React Hook function I have carefully checked the rules of ...

Switch the color of the final letter

Sample code snippet: <p class="test">string</p> Looking to dynamically change the color of the last letter, specifically the letter "g", using CSS only, without relying on JavaScript. I am displaying the string character by character and nee ...

Is it possible to alter the JSON file being loaded in AngularJS by passing a variable?

I am in need of loading the content from either food1.json or food2.json, and I am attempting to achieve this within the html template: <body ng-controller="MainCtrl" ng-init="init('food1')"> Subsequently, in the JavaScript code: $scop ...

Header and footer remain unaligned

Bookstore.html <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css"> <style> ul { list-style-type: none; padding: 20px; overflow: hidden; background-color: black; width:1230px; p ...

Is there a Wordpress floating bar similar to the one seen on 9gag?

After browsing through some posts on stackoverflow, I noticed that my website is not responding as expected. You can check out my site here: To troubleshoot, you can examine the source code and utilize Firebug to inspect the css and javascript being used ...

What is the process for changing the color of a button upon clicking with bootstrap?

Is there a way to specifically change the color of a button in Bootstrap when it is clicked? I have multiple buttons and only want the one that is clicked to change its color. Any help would be appreciated. Thanks! ...

Practicing diligently, JavaScript code snippets

In my app using Playframework 2.2, I heavily rely on ajax to load content dynamically. There are times when I need to bind or change an event handler after loading content via ajax. For example, if I want to modify the click handler for a newly retrieved ...

Dynamically setting CSS values with jQuery to center an image within a div

I'm trying to center an image in a div according to the width of the image after I scale it to have a height of 250px. For example, if I had an image with dimensions 625x450 and, in my CSS file, set the height of the image to be 250px, then the width ...

Utilizing data compression techniques to minimize network bandwidth consumption

Imagine this scenario: I have a considerable amount of data (greater than KB/MB) that needs to be transferred from an ajax request in JavaScript to a webpage in PHP. Would it be beneficial to compress the data using JS scripting before sending it to the se ...

hide content on both desktop and mobile devices

I can't seem to figure out what's wrong here and my mind is blank. I have 2 tables - one for desktop users and one for mobile users. I attempted to hide one using the display none property in my code. .mobile{display: none;} This CSS was mean ...

Transferring Data Between Two Modals

Currently working on developing an approval/edit process for the company website. The setup involves a jquery datatable that showcases scheduled events specific to the logged-in user in a particular format. results = await response.json(); var tr = $(this) ...

The inverse function for Ember Handlebars helper options is experiencing an undefined error

With a template in hand, I needed to toggle the display of certain text based on a method's return value. Research led me to the recommendation of using handlebars helpers for this purpose. So, I implemented a resetPassword helper within the controlle ...