3
我們正在開發一個jQuery插件,它可以在其中創建一個具有多個「列」的DIV。當用戶滾動DIV時,滾動將「捕捉」到列邊緣。我創建了一個演示這個的jsFiddle。將該框向右滾動,直到它捕捉到第1列的末尾。http://jsfiddle.net/vcYjm/3/可拖動拖拽事件後無法設置CSS屬性
問題出在這裏。當用戶拖動滾動柄,我們在該拖代碼塊的更新列,此代碼滾動位置:
$('.'+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});
}
}
我已經考慮過了,但確實將此行更改爲: $('。'+ snapHolder).css('left',snapScrollPos2 +'px'); 同樣的事情發生。事實上,你點擊底部的$('。snapHolder').css('left','-50px')鏈接,你會發現它打破了滾動,並且「right」屬性從未被設置過。 –
你應該仔細檢查你在做什麼,因爲當我將所有的「左」改爲「右」時,它就可以工作。 http://jsfiddle.net/AJMn7/ – vinhboy
在你的小提琴中,滾動功能現在可以工作,但捕捉功能被破壞了。正如我所說,一個位置屬性的設置似乎打破了它的不同設置。您只需切換哪個設置正在工作。 –