8

I am trying to use jQuery to change the background image in a table cell, the table cell has its own class of ".active". I am using jQuery to change other elements in the same place and they all work fine so i think i must have something wrong in the syntax. the function i am using executes after a button is clicked. my code:

function vehicle(arg){
  $(".active").css("color", "blue");  
  $(".active").css("background-image", "url(../img/car.png)");
};

css:

.active{
  background-size: 10px 10px;
  background-repeat: no-repeat;
  border-right: 1px solid none;

the first line executes fine, i have tried the following code plus changed the picture size in every way i can think of :

   $(".active").css("background-image", "../img/car.png");
   $(".active").css("background-image", "url('../img/car.png')");

can anyone point out what i did wrong?

Praveen Kumar Purushothaman
  • 164,888
  • 24
  • 203
  • 252
LucyViolet
  • 1,031
  • 3
  • 11
  • 16

3 Answers3

9

You need to put the .css() relative to the page. So try:

$(".active").css("background-image", "url('img/car.png')");

Assuming the img/ is in the same directory as the page, this should work. Else use the relative paths to the root.

Praveen Kumar Purushothaman
  • 164,888
  • 24
  • 203
  • 252
6

You can also try the below syntax to set the background image dynamically

$(".active").attr("style", "background-image: url('your url')");
Praveen Kumar Purushothaman
  • 164,888
  • 24
  • 203
  • 252
-1

You can set a CSS class to change the image.

CSS:

.img1{
    background-image:img/car1.png;
}

.img2{
    background-image:img/car2.png;
}

jQUERY:

$(".active").removeClass('img1').addClass('img2');
Tushar
  • 85,780
  • 21
  • 159
  • 179
Ganya
  • 9
  • 2
  • 2
    That's not the question. first u can't add a background-image like that, and create a class per image is not a good way. he just want to have the good url. – Alexis Feb 08 '16 at 10:08