Javascript 通过jquery动态添加div

Javascript 通过jquery动态添加div,javascript,jquery,Javascript,Jquery,我正在使用jquery在页面中动态添加元素,如div。divCSS是position:absolute。现在我的问题是,当我同时添加多个div元素时,它们会相互重叠。有没有办法在不更改我的元素的位置属性的情况下,这些属性不会重叠?您可以使用顶部、底部、左侧和右侧css属性定义绝对定位对象的位置。所以你也必须动态地改变这些 例如:第一个元素有top:0、left:0、第二个top:0、left:50等等 使用顶部、底部、左侧和右侧css属性定义绝对定位对象的位置。所以你也必须动态地改变这些 例如:

我正在使用jquery在页面中动态添加元素,如
div
div
CSS是
position:absolute
。现在我的问题是,当我同时添加多个div元素时,它们会相互重叠。有没有办法在不更改我的元素的
位置属性的情况下,这些属性不会重叠?

您可以使用顶部、底部、左侧和右侧css属性定义绝对定位对象的位置。所以你也必须动态地改变这些


例如:第一个元素有top:0、left:0、第二个top:0、left:50等等

使用顶部、底部、左侧和右侧css属性定义绝对定位对象的位置。所以你也必须动态地改变这些


例如:第一个元素有top:0、left:0、第二个top:0、left:50等等

当您添加一个元素作为定位绝对值,并且没有提供有效的顶部和左侧值时,该元素将被定位为绝对值,顶部和左侧均为0

在您的情况下,您要添加的所有元素都应该位于(0,0)位置,以便它们彼此重叠

一种解决方案是计算每个元素的位置,并使用沿sith css({'position':'absolute')向它们添加相应的顶部和左侧值来布局它们,但在大多数情况下,这需要一些数学知识

别担心,你的浏览器已经知道数学,你可以在大多数情况下使用它,所以添加不带“position”“absolute”的div。现在,浏览器可以很好地布局它们。浏览器完成布局后,获取div并获取其当前位置,然后使用该位置使用绝对位置对其进行布局

for(var i=0; i < noOfDivs; i++){
    {
    $('#parentDiv').append('<div class="childDiv"/>');
    }
$('.childDiv').css({
    'position': 'absolute,
    'top' : $(this).position().top,
    'left' : $(this).position().left
    });
for(变量i=0;i

代码没有经过测试,如果div一个接一个地定位,它会再次导致问题,您应该从最后一个位置迭代到第一个位置,或者保存所有位置并在以后应用它们。如果jQuery正在更新单个DOM访问中的所有位置,这将正常工作。

当您将元素添加为positioned absolute并且没有提供有效的top和application左值元素将绝对定位,顶部和左侧均为0

在您的情况下,您要添加的所有元素都应该位于(0,0)位置,以便它们彼此重叠

一种解决方案是计算每个元素的位置,并使用沿sith css({'position':'absolute')向它们添加相应的顶部和左侧值来布局它们,但在大多数情况下,这需要一些数学知识

别担心,您的浏览器已经知道数学,并且您可以在大多数情况下使用它,因此添加不带“位置”“绝对”的div。现在浏览器可以很好地进行布局。在浏览器完成布局后,获取div并获取其当前位置,然后使用该位置使用绝对位置进行布局

for(var i=0; i < noOfDivs; i++){
    {
    $('#parentDiv').append('<div class="childDiv"/>');
    }
$('.childDiv').css({
    'position': 'absolute,
    'top' : $(this).position().top,
    'left' : $(this).position().left
    });
for(变量i=0;i

代码没有经过测试,如果div一个接一个地定位,它会再次导致问题,您应该从最后一个位置迭代到第一个位置,或者保存所有位置并在以后应用它们。如果jQuery在一个DOM访问中更新所有位置,这将很好。

请检查Mashesis插件。这是一个动态布局插件,可以自动排列div元素在文档中添加新元素时,可以防止元素重叠

只需指定container div,让它使用id
container
调用函数即可

$(".container").masonry(); 
然后,当您在容器中添加更多div时,您只需要调用函数

var $newElems = $( newElements );
$(".container").masonry( 'appended', $newElems );

检查砌体插件。它是动态布局插件,在文档中添加新元素时自动排列div元素,防止元素重叠。检查此插件

只需指定container div,让它使用id
container
调用函数即可

$(".container").masonry(); 
然后,当您在容器中添加更多div时,您只需要调用函数

var $newElems = $( newElements );
$(".container").masonry( 'appended', $newElems );

除非要将位置更改为相对,否则必须计算宽度和高度,并相应地调整每个div的顶部和左侧。除非要将位置更改为相对,否则必须计算宽度和高度,并相应地调整每个div的顶部和左侧。