更改元素的背景图像以匹配单击元素的背景图像

时间:2015-04-13 12:06:41

标签: javascript jquery

当我点击另一个元素的div时,我试图让持有者div的背景图像发生变化。背景图像需要更改为单击的div的图像。我该怎么做呢?我认为以下脚本可行,但它只是将其更改为对象中最后一个图像的脚本。

HTML

<div id="holder">
    <div id="menu"></div>
    <div id="plane_image"></div>
    <div id="sub_menu"></div>
</div>

保存图像和其他信息的对象

var Plane_Images = {
    Skin: {
        src: "images/Top.png"
    },
    Structure: {
        name: "Structure Schematic",
        src: "images/ata21.png"
    },
    Electrics: {
        name: "Electrics Schematic",
        src: "images/ata26.png"
    },
    Fuel: {
        src: "images/Top.png"
    }
}

设置可点击的div的背景图像

for(var images in Plane_Images){
    var id = images.toLowerCase();
    var image_src = Plane_Images[images].src;
    var schematic = $("<div data-id='" +id +"_menu'><div class='label'><p>" +images +"</p></div></div>");
    schematic.addClass("schematics");
    schematic.css("background-image", "url(" +image_src +")");

    $("#menu").append(schematic);
}

这是我想要将背景图像设置为与上一循环中单击的div相匹配的位置。

$(".schematics").on("click", function(){
    $("#plane_image").css("background-image", "url(" +image_src +")");
    console.log(image_src);
})

现在,控制台正在返回images/Top.png,这是第一个和最后一个div的图像,无论我点击哪个div。

2 个答案:

答案 0 :(得分:3)

这样的事情应该有效.....首先在data-url中设置URL,然后单击retrieve并将其更改为main div。

for循环中的

更新了这行....

var schematic = $("<div data-id='" +id +"_menu' data-url='" +image_src +     "'><div class='label'><p>" +images +"</p></div></div>");

$(".schematics").on("click", function(){
var url = $(this).data('url')
$("#plane_image").css("background-image", url);
});

答案 1 :(得分:2)

尝试使您的代码适应:

$(".schematics").on("click", function(){
    $("#plane_image").css("background-image", $(this).css('background-image'));
    console.log($(this).css('background-image'));
})

您可以在事件中使用$(this)来获取已点击的元素。