Javascript 在拖动时设置jquery可拖动元素的位置

Javascript 在拖动时设置jquery可拖动元素的位置,javascript,jquery,css,draggable,Javascript,Jquery,Css,Draggable,在我的web应用程序中,有一个可拖动的元素。 当元素在拖动时达到某个限制时,我需要设置该元素的左侧位置。 使用jQuery Dragable小部件,我可以访问元素的位置: function drag(e, ui) { console.log(ui.position.left); } 假设我的left属性设置为1100px,我需要将其设置为500px,而不停止拖动 我有三个函数:dragStart、drag和grandd。 目前,我只能得到一个结果:当设置ui.position.left=50

在我的web应用程序中,有一个可拖动的元素。 当元素在拖动时达到某个限制时,我需要设置该元素的左侧位置。 使用jQuery Dragable小部件,我可以访问元素的位置:

function drag(e, ui) {
 console.log(ui.position.left);
}
假设我的left属性设置为1100px,我需要将其设置为500px,而不停止拖动

我有三个函数:dragStart、drag和grandd。 目前,我只能得到一个结果:当设置
ui.position.left=500时在拖动功能(使用条件)上,左侧位置设置为500,但当然,元素随后会停留在500px。原因是每次触发拖动功能时,左侧位置设置为500

如果代码只运行一次,则行
ui.position.left=500位置左侧属性设置为500,但直接重置为1100

如何一次性设置left属性

$(“#divId”).draggable({
拖动:拖动,
})
函数拖动(e、ui){
如果(ui.position.top>50){
ui.position.left=100;
}
}
#divId{
高度:70像素;
背景色:白色;
边框:4px实心#000000;
文本对齐:居中;
颜色:黑色;
光标:抓取;
}

泡泡

我不确定
jQuery Draggable
如何处理引擎盖下的事情,但即使设置了
ui.position.left=100
,它也不会在事件中注册,直到停止拖动之后-这就是为什么我选择检查目标元素的实际
CSS
属性

我还提供了一个示例(closure/functional-based),它演示了如何在不必检查
CSS
的情况下处理此问题



第一个示例:

$(“#divId”).draggable({
拖动:拖动
});
函数拖动(e、ui){
如果(ui.position.top>50){
$(“#容器”).css('padding-left','100px');
$(this.css('left','0px');
}
如果(ui.position.left<0){
ui.position.left=0
}
}
#divId{
高度:70像素;
背景色:白色;
边框:4px实心#000000;
文本对齐:居中;
颜色:黑色;
宽度:300px;
光标:抓取;
}
#容器{
高度:100vh;
宽度:1000px;
}

泡泡

这是一个JSFIDLE,我希望在拖动过程中左侧位置增加。但是它确实增加了,或者我遗漏了什么?它确实增加了,但是当回到屏幕顶部时,它也减少了,这不是我想要实现的行为。我想一次增加左位置。是的,但只有在一个条件设置为true之后,并且这不会停止拖动。这里的问题是,一旦左位置增加,元素就不能在x轴上拖动…也许有办法结束拖动并立即重新启动以注册事件?