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



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

我正在循环浏览对象对象,以按雇用年份获取员工

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>");
                }); 
            });
        });

为了让他们的名字出现在他们各自的肖像上,我遵循了本指南并尝试将图像包裹在一个位置:相对容器($('#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; 
        }

有什么想法,我怎样才能让每个名字出现在正确的图像上?

谢谢!

append()不是

这样工作的。您只能附加完整的元素,而不仅仅是其中的一部分。所以你需要创建.imagesContainer,将其他元素附加到其中,然后将.imagesContainer附加到#overlay

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

最新更新