我有一个滚动的DIV,通过JQuery确定中间的元素。我尝试过使用position()和offset()参数,在这两种情况下,Firefox都没有得到正确的答案,而Chrome和Safari也是如此。
position()。top或offset()。top确定容器中间元素的位置。然而,firefox正在从滚动容器中确定它,因此在滚动期间总是将第三个元素放下而不是中间元素。
这里有2个小提琴,一个使用.position(),另一个使用.offset()。
OFFSET() - http://jsfiddle.net/pxfunc/XHPYF/7/ POSITION() - http://jsfiddle.net/U4qyp/133/
任何人都知道为什么会发生这种情况或如何解决它?
答案 0 :(得分:2)
如果查看实际的js文件,则根据浏览器的不同,处理滚动行为。对于Firefox,它正在操纵滚动元素的-moz-transform
而不是其中的内容的位置。
DEMO:http://jsfiddle.net/vQXqq/
<强>的jQuery 强>
function test() {
var $ul = $('#leftwheel');
$('#bkodate').val('');
$ul.find('li').each(function(n) {
var $this = $(this);
var $mozTransform = $(".slotinner").css("-moz-transform");
var mozfix = !($mozTransform === null) ? parseInt($mozTransform.substring($mozTransform.lastIndexOf(',') + 1, $mozTransform.length - 3)) : 0;
if ($this.position().top + $this.height() + mozfix > 100 && $this.position().top + mozfix < $ul.height()) {
var result = $('#leftwheel li:eq(' + parseInt(n - 2) + ')').html();
$('#bkodate').val(result);
}
});
}
var leftwheel = new iScroll('leftwheel', {
snap: 'li',
momentum: true,
hScrollbar: false,
vScrollbar: false,
onScrollEnd: function() {
test();
}
});