Unable to change background image using jQuery

Snippet:

const imageUrl = 'img/star.png';
$("#venueId-"+nodeId).css('background','url("'+imageUrl+'") no-repeat top right');

This piece of code is the start of a function that triggers upon clicking. The goal is to display the image (img/star.png) in the top-right corner of the div. However, when this script runs, nothing seems to happen.

I've verified the relative path of the image, and I encountered no issues with this code when changing the background to a gradient instead.

Answer №1

There are a couple of issues in your HTML code, such as using id="venueId" but calling $("#venueID-"). Additionally, the code is wrapped into a function that isn't being called anywhere.

I made these corrections in your JSFiddle and now it should work perfectly. I also moved the width and height styling from the HTML to the CSS for better organization.

You can view the updated JSFiddle here.

Edit: If you prefer, you could rewrite everything in jQuery like this: JSFiddle link.

Alternatively, if you'd like to make some changes, consider using the `onclick` attribute instead of JavaScript in the href attribute. Also, try using a function expression (foo = function(){}) instead of a function declaration (function foo(){}). You can read more about this here.

Check out another option by applying the background through a class selector with hardcoded URL in the CSS, as discussed by Swordfish0321: JSFiddle link.

Answer №2

To check if the 'img/star.png' file is loading correctly, open Firebug (Firefox) or Inspect Element (Chrome), navigate to the "Net" tab, and refresh your page.

If you see a '404 Not Found' error, the image path is incorrect. If you see a '403 Forbidden' error, adjust the permissions so that the nginx/apache user can read it.

Answer №3

Apologies for playing the role of the person who suggests a different approach, but instead of piecing together jQuery concatenation of CSS, consider creating a CSS class and toggling it with jQuery. This will lead to a more organized execution and code that is easier to test, as you are now separating concerns.

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

How can we have a div stay at the top of the screen when scrolling down, but return to its original position when scrolling back up?

By utilizing this code, a div with position: absolute (top: 46px) on a page will become fixed to the top of the page (top: 0px) once the user scrolls to a certain point (the distance from the div to the top of the page). $(window).scroll(function (e) { ...

The Hidden Div containing NicEdit is now shrunk down to a smaller size

Attempting to integrate the NicEdit editor for a hidden textarea stored within a div has presented some challenges. The goal is for the targeted textarea's parent div to be revealed upon the user clicking a button, with the textarea's width set t ...

What steps can I take to ensure that an image does not exceed the size of its parent tag?

Is there a way to ensure that items placed in a container do not exceed the boundaries of the container? I am trying to use my logo as the home button, but when I set the image height and width to 100%, it becomes larger than the nav bar. The CSS for the n ...

How to dynamically insert li elements into a ul list using the .after() method

After trying to add an li element to the ul list, I noticed that my DOM wasn't updating when checking the page source. Even attempting to delete elements with the delete button didn't seem to work as expected. Here is the code snippet below. ...

Creating a new web application, I require a loading overlay to appear during transitions between pages

I've checked high and low, but I can't seem to find the solution! My webapp has a page that is bogged down with data causing it to load slowly. Is there a way to display a loading div while transitioning to the next page? Perhaps something like ...

The links located beneath the iframe/span element are unclickable

My latest creation is a static advert ticker positioned at the bottom of the window. It's contained within an <iframe> for easy placement on other websites. I added a <span> around the <iframe> to keep it fixed at the bottom of the s ...

Code to execute function depending on the width of a div

Looking for a script that can run a function depending on the width of a div. I want the ability to trigger the function when the div is resized. For example, if the div's width is 300px, execute function 1; if it's 700px, execute another functi ...

Having an issue with deleting a table row using jQuery when the button is clicked

I am facing an issue where clicking on a button does not delete the table row despite both the tr id and button id having the same value. Can someone please guide me on what might be going wrong? <tr id="<?php echo $result->id;?>"> <t ...

What could be causing the TailWind CSS Toggle to malfunction on my local server?

While working on designing a sidebar for a ToDo page using Tailwind CSS, I encountered an issue with implementing a toggle button for switching between dark mode and light mode. In order to achieve this functionality, I borrowed the toggling code snippet f ...

Issue with Jquery UI Popup in Internet Explorer 7 and 8

I am experiencing an issue with Jquery UI dialog. Even though I set it to modal:true, the grey overlay appears but the dialog itself does not show up. What's even more puzzling is that when I set autoOpen: true, the dialog displays correctly at first ...

Create a function that adds a new div element with a one-of-a-kind identification when

I am currently developing a web application on www.firstusadata.com/cash_flow_test/. The functionality involves two buttons that add products and vendors dynamically. However, the issue I'm facing is that the appended divs do not have unique IDs, maki ...

"Bootstrap 4 introduces a new feature where adjusting the spacing between columns causes them to wrap underneath one another

My goal is to create two divs that each take up 6 columns with a space of 1px between them. <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" integrity="sha384-MCw98/SFnGE8fJT3GXwEOngsV7Zt27NXFoaoA ...

A common occurrence is for jQuery/Javascript Ajax POST to generate 6 identical posts when used within a .each loop, happening approximately 20

Context: Building a jQuery mobile phonegap application with multipage-ajaxload and sisyphus enabled form that utilizes an AJAX POST loop to interact with a GUI database. The process involves posting 171 section entries, along with one summary entry to a se ...

Using AngularJS to apply custom css to a tag within a directive for creating a Bootstrap sticky footer

Currently, I am in the process of developing my very first AngularJS application with Bootstrap as the responsive framework. In order to achieve a sticky footer, I usually utilize jQuery to determine the outerHeight of the footer and then apply that value ...

jQuery template does not respond to input text when a click event is enabled on an iPhone device

Below is a jQuery template I have: <div class="parent-class"> <div class="sub-class"> <div clas="sub-input-class"> <input type="text" /> </div> </div> </div> Recently, I ...

Disappear notification with jQuery after a set amount of time

I stumbled upon this amazing script for displaying warning messages from this source: Within the script, it is configured to hide the warning message following a click event. $('.message').click(function(){ $(th ...

Using CSS and JavaScript to hide a div element

In my one-page website, I have a fixed side navigation bar within a div that is initially hidden using the display:none property. Is there a way to make this side nav appear when the user scrolls to a specific section of the page, like when reaching the # ...

Generating a backup of the database using the web application's graphical user interface

Does anyone know if it's possible to create a database dump or back up data directly from the browser interface? I'm looking for a way to back up my database within my web application. ...

Tips for triggering animation only when the element is in the viewport

I'm currently developing in React and facing a challenge where I need to trigger a fade animation for an element only when it becomes visible on the screen. The issue is that right now, the animation plays as soon as the page loads, which defeats the ...

Exploring the Possibilities of Utilizing jqPlot with JSON Data

I've been working on retrieving a JSON string through an Ajax call in jQuery and trying to visualize that data in a bar chart using jqPlot. Although I found the JSON conversion code on a Stack Overflow post, I'm facing difficulties as it's ...