当所有div动态变化时,如何获取前一个div的背景图像的URL

时间:2014-04-25 12:16:33

标签: javascript jquery html css

我正在使用动态div的网站上工作。我的代码如下: -

<div class="abc">
    <div clas="whole_0" style="background-image:url('demo0.jpg'); display:none;"></div>
    <div clas="whole_1" style="background-image:url('demo1.jpg'); display:none"></div>
    <div clas="whole_2" style="background-image:url('demo2.jpg');"></div>
</div>

<a href="#">Change-class</a>
<a href="#">get url of previous</a>

当我徘徊在&#39;改变班级&#39;而且这个班级正在动态变化。

我想要的是,当我悬停或点击它时,前一个div的背景图像的网址(运行类是全2)我想要整个_1的背景图像网址.... 希望你能得到我所说的...... 提前谢谢....

3 个答案:

答案 0 :(得分:1)

没有问题。

我认为,对于<div clas="whole..,你的意思是div class="whole..,这只是一个错字

这是:http://jsfiddle.net/RBQ8D/1/

$('.click').on('click',function(){
    $('.abc div').each(function(){
        if($(this).css("display")=="block") {
            alert($(this).prev().attr("style"));
        }
    });
});

仅使用背景图片进行更新 抱歉@Zlatin Zlatev偷走了你的

http://jsfiddle.net/RBQ8D/2/

$('.click').on('click',function(){
    $('.abc div').each(function(){
        if($(this).css("display")=="block") {
            alert($(this).prev().css("background-image"));
        }
    });
});

现在,取决于您的“活动”图片,您可能会遇到代码片段的麻烦,因此您需要检查它是否是第一个元素。你可以这样做:http://jsfiddle.net/RBQ8D/3/

$('.click').on('click',function(){
    $('.abc div').each(function(e){
        if($(this).css("display")=="block" && e > 0) {
            alert($(this).prev().css("background-image"));
        } else if($(this).css("display")=="block" && e==0) {
            alert("next -->" +$(this).next().css("background-image"));
        }
    });
});

答案 1 :(得分:0)

您可以使用jquery.css("background-image")来获取背景图像样式。 见http://api.jquery.com/css/

我建议您使用某种变量/属性/类来存储当前状态,并根据它来获取序列中的上一个或下一个图像。

答案 2 :(得分:0)

扩展@caramba的答案 - 如果你想要的只是文字,而不是图片网址的路径,那么你必须使用一点正则表达式来获取它 -

$('.click').on('click', function () {
    $('.abc div').each(function () {
        if ($(this).css("display") == "block") {
            var imgURLString = $(this).prev().attr("style");
            console.log(imgURLString);
            var imgURL = imgURLString.match(/\'.*?\'/); // get everything in single quotes in the style declaration, returns an array
            console.log(imgURL[0]); // get the only item in that array, returns 'demo1.jpg'
        }
    });
});

所以这取决于你想要什么。可以修改正则表达式以使括号中的内容或任何其他括号。

http://jsfiddle.net/jayblanchard/RBQ8D/4/