Avoid loading images in elements that are not visible

Unlike the original, this is a unique approach to prevent images from loading when nested within hidden <div> elements, utilizing the document.ready method which unfortunately fails to deliver desired results.

The issue lies in the fact that by the time the JavaScript executes, the browser has already initiated the download process for these undesired images.

  $(document).ready(function() {
    $('div').not(":visible").each(function () {
       $(this).find('img').each(function() {
         $(this).attr("src","");
       });
    });
  });

Seeking advice on a more effective JavaScript solution to tackle this problem. Alternatively, considering the use of <img srctmp="...."/> and dynamically replacing srctmp with src through JavaScript for images not enclosed within hidden <div> elements.

Answer №1

If you want to optimize the loading of images on your website, consider using a data attribute instead of the src attribute. Browsers only load images from the src attribute, so you can use data-src for all images initially and then add the src attribute only to the visible ones.

Here's an example of how you can implement this:

<img data-src="path/to/image.jpg" />

In your JavaScript code, you can use the following snippet:

$(document).ready(function() {
  $('div').is(":visible").each(function () {
     $(this).find('img').each(function() {
       $(this).attr("src", $(this).data("src"));
     });
  });
});

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

Using Jquery, take out each parent element and duplicate the child element

It seems to be partially working, but I encounter multiple instances of the cloned element. My goal is to rearrange elements in my JavaScript when the browser viewport reaches a mobile size. Original Order: <div class="sar--img-right-first"> ...

Struggling with adding icons to the home screen in a Create React App?

When working with the manifest.json file, various icon sizes are specified as shown in this example: { “src”:”images/icons/apple-icon-57x57.png”, “type”: “image/png”, “sizes”: “57x57”, } In the index.html file, the ...

Guide to switching content within a DIV when the up and down buttons are pressed using JavaScript and jQuery

I have a functional code with a timeline where each event is connected to the other. There are buttons to delete and copy data, but I want to implement functionality for swapping elements when the up or down button is clicked. I have provided a sample code ...

Encoding a two-dimensional array into JSON format

In my PHP script, I am querying a database and formatting the results as JSON: $query = mysql_query($sql); $rows = mysql_num_rows($query); $data['course_num']=$rows; $data['course_data'] = array(); while ($fetch = mysql_fetch_assoc($q ...

I am experiencing issues with md-no-focus-style not functioning correctly in my configuration

I have a button that triggers the opening of my navigation bar: https://i.sstatic.net/nMr0i.jpg When I click on it, a hitmarker appears: https://i.sstatic.net/OLQaE.jpg The issue is that even after clicking on a navigation item and transitioning to the ...

Utilizing JavaScript, HTML, and CSS to incorporate images within circular frames

After finding inspiration from this question about rotating objects around a circle using CSS, I decided to modify the code to include images of Earth orbiting the Sun. The challenge was to make one image orbit another like a planet circling its star. Ear ...

Tips for addressing Navbar collision with body content or other pages using CSS

I have successfully created a navigation bar using CSS and JS. The image below illustrates the example of my navigation bar: https://i.sstatic.net/2l4gj.png The issue I am facing is that when I select "MY ACCOUNT," it displays some content. However, upon ...

Using AngularJs to implement a $watch feature that enables two-way binding

I am in the process of designing a webpage that includes multiple range sliders that interact with each other based on their settings. Currently, I have a watch function set up that allows this interaction to occur one way. However, I am interested in havi ...

Unable to activate Knockout data-bind using jQuery

I'm developing a plugin using jQuery and knockout.js. Currently, I have a scenario where I need to manipulate radio buttons with knockout data-bindings. However, I've encountered an issue when trying to uncheck a radio button by clicking another ...

The event handlers on all elements are not loaded when the HTML page is rendered

Currently in the process of developing a project which involves a web server app built with nodejs + express and some client views that are rendered using ejs. In the main app.js file, the following code is present: const express = require('express& ...

Struggling to keep navbar fixed with a blur effect without it colliding with body content as you scroll?

I'm looking to create a sticky navbar with a blur effect similar to the one seen on (try scrolling to see the blur effect on the nav). I want it to have the following structure: My HTML code is as follows: <header class="sticky z-10 top-10"> ...

Tips for converting response text into HTML code

I am receiving a text response like this <span class='text-4xl'>description1</span> When I display it on the screen: import React,{useContext, useEffect} from 'react'; import blogsContext from '../context/blogsCon ...

Trigger a Vue method using jQuery when a click event occurs

I'm attempting to attach a click event to an existing DOM element. <div class="logMe" data-log-id="{{ data.log }}"></div> ... <div id="events"></div> Struggling to access external Vue methods within my jQuery click handler. A ...

"Triggering a key press event for a selected item in a single

Is there a way to automatically add the selected value when the enter key is pressed on a chosen jQuery single select? I am looking for an event similar to keypress that can be used to trigger an action when the return key is pressed. <select id="mys ...

Automatically adjust the size of an <object> element based on the document

I'm struggling with embedding a Word document saved as an HTML file. No matter what I try, I can't seem to get it to resize properly to fit the text. I want the height of the embedding to be 100% so that it covers the page completely without cutt ...

Creating an on/off toggle for directional buttons on a vertical slider

Having trouble with a vertical slider that includes images and two buttons (slide up and slide down). I have managed to hide them, but struggling to make them reappear when necessary. The jsfiddle link should provide more context. Open to any advice or sug ...

Ways to position buttons within a card using HTML Bootstrap

Is there a way to align all my buttons in a single horizontal line?https://i.sstatic.net/n7f6o.png I'm encountering two issues with this alignment: The "Find out more" buttons on each card are positioned right after the last text line, causing the ...

The app in NextJs encounters layout issues on all pages due to a break in

I've developed a NextJs application using npx create-next-app and attempted to implement my own custom layout. However, this resulted in breaking the app unexpectedly without any clear reason. The project structure includes: components -> Footer.j ...

Trouble communicating with child component in Vue 3.0 - no event received

I have a button component that acts as a child component <template> <div class="button-container"> <el-button @click="$emit('onClick')" type="primary">{{ text }}</el-button> </div&g ...

How can I retrieve the most recent entry in supabase?

Is there a way to check the latest record of a user in Supabase using their user ID? I want to retrieve only the most recent date in descending order without fetching all records from the table. I am currently working on this project using Node.js with Exp ...