2013-05-29 61 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

相关问题