Clicking on a page will cause a random div to appear and disappear using jquery

I have two div elements in my application. I want to randomly show and hide these divs when a navigation link is clicked and the next page loads completely.

The example below does not include multiple pages, only a single page. Therefore, I want to randomly show and hide the divs across multiple page loads.

For example, the first div is always visible, so if a user clicks on any navigation link and the next page opens, then the first div hides and the second div shows. The same applies for other navigation link clicks - switch between the two divs randomly.

Code :

$(".navbar .nav-link").click(function() {
  if ($('.card1:visible').length) {
    $('.card1').hide();
    $('.card2').show();
  } else {
    $('.card1').show();
  }
});
.hide {
  display: none;
}

.Wrap .card img {
  height: 250px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="a9cbc6c6dd*******bc8d9e99c8798879a">[email protected]</a>/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">

<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <div class="container-fluid">
    <a class="navbar-brand" href="#">Navbar</a>
    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarNav">
      <ul class="navbar-nav">
        <li class="nav-item">
          <a class="nav-link active" aria-current="page" href="#">Home</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Features</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Pricing</a>
        </li>
        <li class="nav-item">
          <a class="nav-link disabled">Disabled</a>
        </li>
      </ul>
    </div>
  </div>
</nav>
<div class="Wrap">
  <div class="card card1 " style="width: 18rem;">
    <img src="https://picsum.photos/200/300" class="card-img-top" alt="...">
    <div class="card-body">
      <h5 class="card-title">Home Content</h5>
      <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
      <a href="#" class="btn btn-primary">Go somewhere</a>
    </div>
  </div>
  <div class="card card2 hide" style="width: 18rem;">
    <img src="https://picsum.photos//id/237/200/300" class="card-img-top" alt="...">
    <div class="card-body">
      <h5 class="card-title">About Content</h5>
      <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
      <a href="#" class="btn btn-primary">Go somewhere</a>
    </div>
  </div>
</div>

Answer №1

Check out this demo, I've made some tweaks to your code and now it's functioning as expected.

$(document).ready(function () {
     $('.card2').hide();
    $(".navbar .nav-link").click(function () {
         
        if ($('.card1:visible').length) {
            $('.card2').show();
            $('.card1').hide();
        } else {
            $('.card1').show();
            $('.card2').hide();
        }
    });
});
.hide {
  display:none;
}

.Wrap .card img {
  height: 250px;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<link href="https://cdn.jsdelivr.net/npm/<a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="7b1914140f080f091a0b3b4e554a5548">[email protected]</a>/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">

<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <div class="container-fluid">
    <a class="navbar-brand" href="#">Navbar</a>
    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarNav">
      <ul class="navbar-nav">
        <li class="nav-item">
          <a class="nav-link active" aria-current="page" href="#">Home</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Features</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Pricing</a>
        </li>
        <li class="nav-item">
          <a class="nav-link disabled">Disabled</a>
        </li>
      </ul>
    </div>
  </div>
</nav>

<div class="Wrap">
  
  <div class="card card1 " style="width: 18rem;">
  <img src="https://picsum.photos/200/300" class="card-img-top" alt="...">
  <div class="card-body">
    <h5 class="card-title">Home Content</h5>
    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
    <a href="#" class="btn btn-primary">Go somewhere</a>
  </div>
</div>
  
  
  <div class="card card2 hide" style="width: 18rem;">
  <img src="https://picsum.photos//id/237/200/300" class="card-img-top" alt="...">
  <div class="card-body">
    <h5 class="card-title">About Content</h5>
    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
    <a href="#" class="btn btn-primary">Go somewhere</a>
  </div>
</div>
</div>

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

Trouble with search box images on Internet Explorer causing confusion

Here is the searchbox image displayed: With this code and css styling: #searchcontainer { margin: 40px 0 0 0; } .search { float: right; margin: 0; padding: 0; height: 21px; width: 310px; } .search input, .search button { mar ...

Obtaining Input Field Value in Angular Using Code

How can I pass input values to a function in order to trigger an alert? Check out the HTML code below: <div class="container p-5 "> <input #titleInput *ngIf="isClicked" type="text" class="col-4"><br& ...

What is the best way to retrieve the ID of the most recent div element added using AJAX and jQuery?

Initially, I have a div with a pre-set ID. Then, I use an AJAX call to add more divs into this container. How can I retrieve the IDs of these dynamically added divs using jQuery? For example: <div class="main"> <div id="0" class="take">t ...

Incorporate additional plugins into React-Leaflet for enhanced functionality

I'm currently working on developing a custom component using react-leaflet v2, where I aim to extend a leaflet plugin known as EdgeMarker. Unfortunately, the documentation provided lacks sufficient details on how to accomplish this task. In response, ...

Supernumber Lottery: A Chance to Win Big!

I've been faced with the task of creating a random number generator for selecting lottery numbers. The challenge is to generate 6 unique numbers between 1 and 49, in ascending order, without any repeats. Additionally, there is a 7th number called the ...

How can I display different divs based on a selected option?

I'm encountering difficulties while attempting to develop the code for this specific task. My goal is to display or hide divs based on the selection made in a select option, with a total of 4 options available. There are 2 select elements <select ...

Is incorporating CSS advisable in Karma Unit level tests for AngularJS projects?

Imagine your JavaScript code is running some element or position calculations within an AngularJS directive. When testing this JavaScript code, should CSS be included in karma.conf.js? I've noticed that some popular projects have included CSS files. ...

What is the best way to retrieve all the listed TV and film ratings in descending order? Using Django

Our Goal I aim to organize movies based on their star ratings and filter out those with ratings lower than a specified threshold. 2. Retrieve the IDs of Movies and TV shows mentioned in the view, fetch the data and score through URLs one by one. 3. Presen ...

Modify the Google Translate dropdown using programming techniques

Recently, I attempted to integrate the Google Translate dropdown feature into a website using the following code snippet: function googleTranslateElementInit() { new google.translate.TranslateElement({ pageLanguage: 'en' }, 'google ...

Having trouble sending data to a Laravel 5 controller through Angular. Keep getting Error 422: Unprocessable Entity

My login form is built with angularjs, and I am trying to send the user's credentials to the default AuthController in Laravel 5. However, I keep encountering a server response of 422 Unprocessable Entity with the message: email field is required. HT ...

Tips for incorporating external AMD modules with Angular2 using WebPack

In my current project using Angular2, TypeScript, and WebPack, I am looking to incorporate the Esri ArcGIS JavaScript API. The API can be accessed from the following URL: By importing Map from 'esri/Map';, I aim to import the corresponding modul ...

Tips on choosing a selenium element using Javascript which is assigned as an external variable

Is there a way to select an element using protractor with selenium, pulling the element from an external JSON variable? I'm having trouble understanding how to do this correctly. The code snippet below seems to be incorrect as it references $data with ...

Leveraging multiple css classes within a single class definition

I need some help with this issue, it seems pretty basic but I can't seem to find the solution...sorry for asking a beginner question. Currently, I have multiple HTML elements that share the same CSS classes: <a class="class1 class2 class3">< ...

Discovering applied styles based on component props in Material-UI v5 using browser developer tools

When working with Material UI v4, I found it easy to identify which styles are applied by component props classname using browser dev tools. This allowed me to override specific styles of the component effortlessly. However, in Material UI v5, I am unsure ...

Navigating the World of CSS Selectors - Balancing Style Control Without Excessive Class Usage

I recently stumbled upon a responsive menu that I wanted to incorporate into my webpage design. However, as I delved deeper into the implementation process, I realized that the CSS code associated with the menu was targeting all ul, li, a elements on the e ...

Methods for passing JavaScript variables to PHP

I have encountered this problem on Stack Overflow before, but I couldn't find a solution that worked for me. I am using Codeigniter and have a form where users can rate a product. What I need to achieve is to insert the user's rating into the dat ...

I am facing issues with my Bootstrap and CSS conflicting with each other in React JS

My styles are mysteriously changing when I add the bootstrap link between the <head></head> tags. Here is the header without the bootstrap link: https://i.sstatic.net/ly2nf.png And here is the header with the bootstrap link: https://i.sstatic ...

Activate the Alert (https://material-ui.com/components/alert/#alert) starting from the React component at the bottom of the hierarchy

When it comes to alerts, a normal alert is typically used like alert("message to be displayed");. However, I prefer using material UI Alerts which return a JSX component. For example: <Alert severity="success">This is a success alert — check it out ...

What steps can I take to modularize this code and make it reusable in other projects?

I need assistance with converting this Node.JS code snippet into a module, so that I can easily integrate recaptcha functionality into various parts of my system. Here is the current code: app.post('/register_user', (req, res) => { const se ...

Tips for properly capitalizing the first letter of each word connected through ng-model

After receiving a JSON response from an API, I am binding it to form elements using ng-model. The data returned from the API is in UPPERCASE. How can I apply a filter or CSS to capitalize the first letter of each word? <input type="text" ng-model="s ...