[英]Scrolling button jQuery doesn't work instantly
我正在一些使用按钮滚动到下一个div的网页上工作。 我可以使它在每个页面上工作,除了在这个特定实例中(请参阅jsfiddle)。
我的问题是按钮在加载页面时不起作用,用户首先必须手动开始滚动,然后按钮才能工作。 我假设这是由于我的jQuery编码中的某些错误,我已经一遍又一遍地查看了,但是我似乎找不到问题。 有谁比我更熟悉jQuery,谁能为我提供解决方案?
http://jsfiddle.net/y5wx7nst/3/
$(document).ready(function () {
var currentElement = $("#bodytext > div:nth-child(1)");
var onScroll = function () {
var container = $("#bodytext");
var children = $(".section");
for (var i = 0; i < children.length; i++) {
var child = $(children[i]);
var childLeft = container.offset().left < child.offset().left;
if (childLeft) {
currentElement = child;
console.log(currentElement);
return;
}
}
};
var scrollToElement = function ($element) {
var container = $("#bodytext");
var children = $(".section");
var width = 0;
for (var i = 0; i < children.length; i++) {
var child = $(children[i]);
if (child.get(0) == $element.get(0)) {
if (i === 0) {
width = 0;
}
container.animate({
scrollLeft: width
}, 500);
onScroll();
}
if (child.next().length > 0) {
width += child.next().offset().left - child.offset().left;
} else {
width += child.width();
}
}
};
var buttonright = function (e) {
scrollToElement(currentElement.next());
};
var buttonleft = function (e) {
var container = $("#bodytext");
if (currentElement.prev().length > 0) {
if (container.offset().left == currentElement.prev().offset().left) {
currentElement = currentElement.prev().prev().length > 0 ? currentElement.prev().prev() : currentElement.prev();
} else {
currentElement = currentElement.prev();
}
}
scrollToElement(currentElement);
};
$("#bodytext").scroll(onScroll);
$("#buttonright").click(buttonright);
$("#buttonleft").click(buttonleft);
});
最初滚动后,仅调用onScroll()函数:
$("#bodytext").scroll(onScroll);
我在声明之前添加了它,并且一切正常:
onScroll();
jsfiddle: http : //jsfiddle.net/y5wx7nst/5/
当currentElement的代码运行值不正确时。 因此,您应该通过调用onScroll()函数来计算它;
...
$("#bodytext").scroll(onScroll);
$("#buttonright").click(buttonright);
$("#buttonleft").click(buttonleft);
onScroll();
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.