我的标题可能没有明确说明我要实现的目标,我有一些动态创建的div,现在我有一个ajax请求来删除用户希望删除的任何div,我想如果ajax返回成功,我将删除div ,我使用.remove()方法删除div,现在我的问题是删除图像后,其中包含的空间留为空白,因此我需要调整所有直接同级的左边以填充空白空间。
<div class="carousel-inner">
<div class="mycrousel" id="photo1" style="left:10"></div>
<div class="mycrousel" id="photo2" style="left:120"></div>
<div class="mycrousel" id="photo3" style="left:230"></div>
<div class="mycrousel" id="photo4" style="left:340"></div>
<div class="mycrousel" id="photo5" style="left:450"></div>
<div class="mycrousel" id="photo6" style="left:560"></div>
<div class="mycrousel" id="photo7" style="left:670"></div>
<div class="mycrousel" id="photo8" style="left:780"></div>
<div class="mycrousel" id="photo9" style="left:890"></div>
<div class="mycrousel" id="photo10" style="left:1000"></div>
</div>
所有这些都在从左到右的同一行上,现在假设用户删除id = photo5的div,我想将id为photo6-photo10的div的左侧减少110,以占用已删除的div留下的空间
function scrollThumb() {
var $scrollWidth = 110;
var $photoId = 'photo5' //id of the photo that was deleted
var $totalPhoto = $('.carousel-inner > div').length;//get the total number of div left;
$('#photo6').animate({
left: "-=" + $scrollWidth + "px"
}
$('#photo7').animate({
left: "-=" + $scrollWidth + "px"
}
$('#photo8').animate({
left: "-=" + $scrollWidth + "px"
}
$('#photo9').animate({
left: "-=" + $scrollWidth + "px"
}
$('#photo10').animate({
left: "-=" + $scrollWidth + "px"
},
}
我知道上面的代码是错误的,但这只是我要实现的目标的概述,我不希望也无法对其进行硬编码,我希望它是动态的,而且我也考虑在函数中使用计数器,但它不会因为ID不是连续的,所以不能工作。.任何帮助使该工作甚至更好的主意的工作,在此先感谢。
我更新了添加为img的问题,在下面的img中,我们可以看到我现在有4张图像,我删除了一张,并且它占据的空间是空的,我需要动态地更改右边2张图像的左侧属性删除的图像并将其减少110px,这将使它们填满删除的图像留下的空间,如果我使用float:left而不是绝对位置,CSS会为我完成此操作,但是我需要使用绝对位置来实现我的目标,任何帮助谢谢
我做了一个小jsfiddle,希望它就是您想要的:https://jsfiddle.net/j45x4qjx/
这是函数:
function deleteDiv(selector) {
var mycrousel = $('.mycrousel');
var div = $(selector);
var divIndex = mycrousel.index(div);
var otherElem;
if (divIndex === 0) {
otherElem = $(mycrousel.get(divIndex + 1));
} else {
otherElem = $(mycrousel.get(divIndex - 1));
}
// get left value between two member
var leftElem = parseInt(div.css('left'));
var leftOtherElem = parseInt(otherElem.css('left'));
var leftPx = Math.abs(leftElem - leftOtherElem);
// remove div
div.remove();
$('.mycrousel').each( function( index, element ) {
if (index > divIndex - 1) {
var $element = $(this);
var left = parseInt($element.css('left'));
// get new value of left or 0 if negative value
var newLeft = Math.max(0, left - leftPx);
$element.animate({
left: newLeft + "px"
});
}
});
}
您只需要传递要删除的div的选择器,然后计算该div与最接近的div之间有多少像素,然后将该数字删除到所有其他div。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句