拖动拖动事件后无法设置CSS属性

时间:2011-10-20 01:44:00

标签: javascript jquery

我们正在开发一个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});
    }
}

1 个答案:

答案 0 :(得分:0)

这是我注意到的问题。您正在使用“right”属性来设置snapHolder的位置。然而,您使用“left”属性作为捕捉位置。

设置“left”属性后,“right”属性将被忽略。

坚持一个。使用左或右。

你不能同时使用它们。