JQuery位置问题?
JQuery position issue?
所以我正在 jQuery 中建造一个小画廊。
var picwidth = $('.gallery-window ul li').width();
var left1 = $('.gallery-window ul').position().left;
var length = $('.gallery-window ul li').length;
var picnum = 1;
如您所见,我创建了 4 个变量,第一个获取图像宽度(因此我不需要为每个设备单独编写代码,因为网站是响应式的),第二个获取左侧位置(有问题的那个),第三个让我得到了图像数量(因为会有不止一个这样的画廊),最后一个只是迭代。
现在,"next"按钮的代码如下
$('.gallery-next').click(function() {
if (picnum === length) {
$('.gallery-window ul').css("left", "0px").animate({left: left1 -= picwidth}, 500);
picnum = 2;
}
else {
$('.gallery-window ul').animate({left: left1 -= picwidth}, 500);
picnum++;
}
console.log("number" + picnum);
console.log("position" + left1);
});
根据我最后的两个控制台日志,问题似乎是 position
属性 在 "if" 条件满足。不要误会我的意思,jQuery 确实遵循 "CSS" 属性 命令并将我的列表移回开头,但位置 属性 仍为负数。
这是我复制的控制台日志信息,希望你明白我的意思:
number2 position-320
number3 position-640
number4 position-960
number2 position-960
目前有4张图,3张常规图,第4张和第1张一样,因为有过渡效果。但是当我在第 4 个并单击下一步时,一切看起来都很好,但我的 "position" 属性 仍然在 -960。因此,如果我在那之后单击 "next",而不是再次将我从 0(css 属性 设置的位置)带到 -320,它会立即将我带到 - 1280,不用说,这把我的画廊搞得一团糟。
知道是什么原因造成的吗?我该如何解决?
你现在可能已经注意到了,但你并没有将 left1 设置为 0,那为什么会是 0?在 if 的两个分支中,您都设置了 left1 -= picwidth,因此您看到的是 console.logs。
如果我是你,我会更改 if 中的变量值,然后再做任何你想做的事:
$('.gallery-next').click(function() {
if (picnum === length) {
left1 = 0;
picnum = 2;
}
else {
left1 -= picwidth;
picnum++;
}
$('.gallery-window ul').animate({left: left1 }, 500);
console.log("number" + picnum);
console.log("position" + left1);
});
我发现,您在 if true 语句中犯了错误。当 picnum === length 那么你需要将 ul 左位置设置为初始位置(假设为 0)。
if (picnum === length) {
$('.gallery-window ul').css("left", "0px").animate({left: 0}, 500);
picnum = 2;
} else {
$('.gallery-window ul').animate({left: left1 -= picwidth}, 500);
picnum++;
}
如果仍然无法正常工作,请在此处分享您的示例代码或上传并在任何直播中分享 URL 以获得清晰的思路。
所以我正在 jQuery 中建造一个小画廊。
var picwidth = $('.gallery-window ul li').width();
var left1 = $('.gallery-window ul').position().left;
var length = $('.gallery-window ul li').length;
var picnum = 1;
如您所见,我创建了 4 个变量,第一个获取图像宽度(因此我不需要为每个设备单独编写代码,因为网站是响应式的),第二个获取左侧位置(有问题的那个),第三个让我得到了图像数量(因为会有不止一个这样的画廊),最后一个只是迭代。
现在,"next"按钮的代码如下
$('.gallery-next').click(function() {
if (picnum === length) {
$('.gallery-window ul').css("left", "0px").animate({left: left1 -= picwidth}, 500);
picnum = 2;
}
else {
$('.gallery-window ul').animate({left: left1 -= picwidth}, 500);
picnum++;
}
console.log("number" + picnum);
console.log("position" + left1);
});
根据我最后的两个控制台日志,问题似乎是 position
属性 在 "if" 条件满足。不要误会我的意思,jQuery 确实遵循 "CSS" 属性 命令并将我的列表移回开头,但位置 属性 仍为负数。
这是我复制的控制台日志信息,希望你明白我的意思:
number2 position-320
number3 position-640
number4 position-960
number2 position-960
目前有4张图,3张常规图,第4张和第1张一样,因为有过渡效果。但是当我在第 4 个并单击下一步时,一切看起来都很好,但我的 "position" 属性 仍然在 -960。因此,如果我在那之后单击 "next",而不是再次将我从 0(css 属性 设置的位置)带到 -320,它会立即将我带到 - 1280,不用说,这把我的画廊搞得一团糟。
知道是什么原因造成的吗?我该如何解决?
你现在可能已经注意到了,但你并没有将 left1 设置为 0,那为什么会是 0?在 if 的两个分支中,您都设置了 left1 -= picwidth,因此您看到的是 console.logs。
如果我是你,我会更改 if 中的变量值,然后再做任何你想做的事:
$('.gallery-next').click(function() {
if (picnum === length) {
left1 = 0;
picnum = 2;
}
else {
left1 -= picwidth;
picnum++;
}
$('.gallery-window ul').animate({left: left1 }, 500);
console.log("number" + picnum);
console.log("position" + left1);
});
我发现,您在 if true 语句中犯了错误。当 picnum === length 那么你需要将 ul 左位置设置为初始位置(假设为 0)。
if (picnum === length) {
$('.gallery-window ul').css("left", "0px").animate({left: 0}, 500);
picnum = 2;
} else {
$('.gallery-window ul').animate({left: left1 -= picwidth}, 500);
picnum++;
}
如果仍然无法正常工作,请在此处分享您的示例代码或上传并在任何直播中分享 URL 以获得清晰的思路。