1

编码:

function showLetter() {
    setInterval(function() {
        var letter = imgsArray[random()];
        var top = random();
        var left = random();
        $("div").append("<img src='imgs/" + letter + ".png'>");
        $("div").last().css({"position": "absolute", "top": top + "px", "left": left + "px"});
    }, 1000);
}

在数组的每个位置imgsArray,我都有一个图像的名称。

我想要做的:每 1000 毫秒添加一个图像,在屏幕上给它一个随机位置。(如果可以防止重叠,那就太好了,但我认为这已经得到了回答)。

它的作用:每 1000 毫秒,它会添加一个字母的新图像,并为所有图像提供相同的属性,因此它们最终都水平对齐:)

我真的不明白为什么会这样。使用$("div").last().css(),我是否没有选择添加到 div 的最后一张图像并更改其属性?

提前致谢。

4

2 回答 2

2

$("div").last()`$("div")为您提供jquery 对象中的最后一项。该 jQuery 对象中没有图像。

也许你想要的是:

$("div img").last()

但是,这是非常低效的。如果你只是想对新创建的图像对象进行操作,那么你可以直接对它进行操作:

function showLetter() {
    setInterval(function() {
        var letter = imgsArray[random()];
        var top = random();
        var left = random();
        var img = $("<img src='imgs/" + letter + ".png'>");
        img.css({"position": "absolute", "top": top + "px", "left": left + "px"});
        $("div").append(img);
    }, 1000);
}
于 2013-06-28T06:49:07.960 回答
1

您可能需要考虑这样的事情:

var div = $('<div/>').css({position:'absolute'....}).appendTo('body');
var img = $('<img/>', {src:'imgs/' + letter + '.png'}).appendTo(div);

这会将包含图像的新 <div> 添加到 <body>。

于 2013-06-28T06:57:15.483 回答