关于为动态生成的Div添加样式的问题

时间:2014-08-23 16:20:15

标签: javascript jquery css3

请您查看 This Demo 并告诉我为什么我无法为动态生成的div添加保证金?

jQuery(function () {
    var rnd1 = Math.ceil(Math.random() * 450);
    var rnd2 = Math.ceil(Math.random() * 450);
    for (var i = 0; i < 6; i++) {
        $('.wrapper').append('<div class="box"></div>');
        //        $('.box').css({"left": rnd1,"top": rnd2});
    }
    $(".box").each(function () {
        $(this).css({
            "left": rnd1,
            "top": rnd2
        });
    });

正如你所看到的,我试过了两个:

  

$(&#39; .box&#39;)。css({&#34; left&#34;:rnd1,&#34; top&#34;:rnd2});

在循环内并使用.each()作为:

 $(".box").each(function () {
        $(this).css({
            "left": rnd1,
            "top": rnd2
        });
    });

离开了循环,但显然他们没有完成这项工作!感谢

1 个答案:

答案 0 :(得分:1)

由于您没有添加保证金,因此您需要设置topleft位置,并且只有在元素没有静态位置时才有效

$(this).css({"left": rnd1,"top": rnd2, position: 'relative'});

或者您实际上可以添加保证金

$(this).css({"margin-left": rnd1, "margin-top": rnd2});

作为旁注,你可以在创建元素时添加样式,第二个循环是不必要的

for (var i = 0; i < 6; i++) {
    $('.wrapper').append(
        $('<div />', {
            'class' : 'box',
            css : {
                marginLeft : rnd1,
                marginTop  : rnd2
            }
        })
    );
}