我们正在开发一个jQuery插件,用于创建一个内部有多个“列”的DIV。当用户滚动DIV时,滚动将“捕捉”到列边缘。我创建了一个演示这个的jsFiddle。向右滚动框,直到它捕捉到第1列的末尾。http://jsfiddle.net/vcYjm/3/
这是问题所在。当用户拖动滚动句柄时,我们使用此代码在拖动代码块中更新列的滚动位置:
$('.'+snapHolder).css('right', snapScrollPos+'px');
最初加载页面时工作正常,但一旦有位置属性的任何其他设置,它就会停止工作。例如,重新加载jsFiddle,然后单击链接“set $('。snapHolder')。css('left',' - 50px')”。阻力将不再起作用。同样,如果滚动到第一个捕捉,则滚动不再有效。
以下是在列之前的快照区域中触发的代码:
if ( colOffset > (colWidth - snapSize) && colOffset < colWidth ) {
inAfter = false;
if (!inBefore) {
inBefore = true;
console.log("before");
$('.'+snapHolder).css('left', '-' + fullWidth*(colNum+1) + 'px');
$handle.parents(':eq(2)').find('.'+dragHandle).css({'left': leftPosition});
}
}
并在专栏之后:
} else if ( colOffset < snapSize ) {
inBefore = false;
if (!inAfter) {
inAfter = true;
console.log("after");
$('.'+snapHolder).css('left', '-' + fullWidth*colNum + 'px');
$handle.parents(':eq(2)').find('.'+dragHandle).css({'left': leftPosition});
}
}
答案 0 :(得分:0)
这是我注意到的问题。您正在使用“right”属性来设置snapHolder的位置。然而,您使用“left”属性作为捕捉位置。
设置“left”属性后,“right”属性将被忽略。
坚持一个。使用左或右。
你不能同时使用它们。