使用jQuery将文本定位在一组图像上

时间:2013-09-25 14:45:34

标签: javascript jquery css

我正在尝试将员工的名字放在他们的肖像上。

我正在循环一个物体对象,以便雇佣员工

var classes = { 
2013: { 
"image/path.png" : "name of employee", 
"image/path2.png" : "name of employee2" 
}, 
2012... 
}

并使用jQuery each循环播放它们,以按租用年份显示他们的肖像和名称:

        jQuery(document).ready(function($){
            //identify all elements in <li>
            $('li').on('mouseover', function(e){
                $('#overlay').empty();
                var title = $('<h2>');
                title.text('Class of ' +  e.target.id);
                $('#overlay').append(title);

                $.each(classes[e.target.id], function(path, name) {
                    var img = $('<img/>');
                    img.attr('src', path);
                    $('#overlay').append("<span class='imagesContainer'>");
                    $('#overlay').append(img);
                    $('#overlay').append("<span class='names'>" + name + "</span>");
                    $('#overlay').append("</span>");
                }); 
            });
        });

为了让他们的名字出现在他们各自的肖像上,我已经按照这个this指南尝试将图像包裹在一个位置:相对容器($('#overlay').append("<span class='imagesContainer'>"); ... append image here ... $('#overlay').append("</span>");,然后将文本放在上面定位:绝对......但它不起作用......

CSS:

        #overlay {
            position: relative;
            float: left;
            width: 100%;

        }
        .imagesContainer {
            position: relative;
            float: left;        
        }

        .names {
            position: absolute;
            /*background: rgba(0, 0, 0, 0.7);*/
            padding: 5px;
            color: white;
            font-size: 12px;
            font-family: "Trebuchet MS", Helvetica, sans-serif; 
        }

我是否有任何想法可以让每个名字出现在正确的图像上?

谢谢!

1 个答案:

答案 0 :(得分:3)

append()不会这样做。您只能追加完整元素,而不仅仅是它们的一部分。因此,您需要创建.imagesContainer,将其他元素附加到其中,然后将.imagesContainer附加到#overlay

var $imgContainer = $("<span class='imagesContainer'>");
$imgContainer.append(img);
$imgContainer.append("<span class='names'>" + name + "</span>");

$('#overlay').append($imgContainer);