我有一系列DIV,都是同一个类(.ms-acal-item)。我想要做的就是获得每个人的位置,将其与上面的位置进行比较,并在需要时将其移位。这是为了更正事件切片重叠的SharePoint 2013日历上的问题。到目前为止,这是我的代码:
$(function() {
$('.ms-acal-item').each(function(i, obj) {
var tile = jQuery(this);
var prev = tile.prev();
var prevPos = prev.position();
var tilePOs = tile.position();
var curTop = parseInt(tilePos.top);
var newTop = parseInt(prevPos.top) + 30;
if(curtop !== newTop){
tile.css('top', newTop);
}
});
});
每个瓷砖高20px,绝对符合直线排列。我需要做的是比较每个瓷砖与其前身的位置,然后将其向下移动30px(如果它已经不存在)(瓷砖为20px,它们之间为10px)。到目前为止,它不起作用 - 我的代码似乎对磁贴位置没有影响。
我做错了什么?
答案 0 :(得分:1)
逻辑中存在一个问题,在处理第一个元素时我们没有任何前面的元素,所以我们需要忽略它并且代码中的错误很少(可变大小写)。下面是修改代码。(要查看更改效果,我将样式从顶部更改为边距左边,之后更正)
$(function() {
$('.ms-acal-item').each(function(i, obj) {
var tile = $(this);
var prev = tile.prev();
if (typeof prev.position() !== "undefined") {
var prevPos = JSON.parse(JSON.stringify(prev.position()));
var tilePos = JSON.parse(JSON.stringify(tile.position()));
var curTop = parseInt(tilePos.top);
var newTop = parseInt(prevPos.top) + 30;
if(curTop !== newTop){
tile.css('margin-left', newTop);
}
}
});
});