2013-05-29 46 views
0

我想在拖動時更新ulleft屬性,但只要我開始拖動就會跳到-1980。在拖動時更新左側屬性

$('#draggable').on('drag', function() { 

    var start = 0; 
    var end = 2000; 

    while (start <= end) { 
     $('ul').css('left', -start); 
     start+=20; 
    } 

}); 

FIDDLE

+0

是#draggable實際UI元素還是沒有? – ryanulit

+0

不,#draggable是div,ul與它沒有直接關係。 – dzumla011

+0

你能模擬jsbin.com – Arpit

回答

0

聲明你drag處理程序start變量外:

var start = 0; 
$('#draggable').on('drag', function() { 

    var end = 2000; 

    while (start <= end) { 
     $('ul').css('left', -start); 
     start+=20; 
    } 

}); 
+0

您需要將其封裝在閉包中以不污染全局範圍。 – crush

+1

不,不要把它聲明爲_global_,在封閉範圍中聲明它__ – Alnitak

+0

範圍意味着什麼?@Alnitak對不起,你能告訴我什麼是封閉範圍 – PSR

1

好吧根據我的問題是在循環

while (start <= end) { 
     $('ul').css('left', -start); 
     start+=20; 
    } 

循環的時候start==2000這是結束你爲什麼這麼說直接向左= 2000。

我不知道你在做什麼。但如果您希望每個20像素左側都變爲可見,請嘗試使用網格。

對於水平滾動條試試這個:

Scroll Demo

JS

$(document).ready(function(){ 
    $('#scroll').draggable({grid:[1,0]}); 
    $('#scroll').on('drag',function(event,ui){ 
    $('#text').css('margin-left',-ui.position.left); 
    }); 
}); 
+0

對不起,首先誤解你的答案。我同意。我認爲他應該完全移除循環,並將'start'移到匿名函數的範圍之外,以便在拖動事件中保留它的值。 – crush

+0

我想他正在嘗試構建一個水平滾動條。 – Arpit

+0

我是,有一個小提琴.. – dzumla011

相關問題