[原文翻译]
JQuery UI Draggable插件用来使选中的元素可以通过鼠标拖动.
Draggable的元素受影响css: ui-draggable, 拖动过程中的css: ui-draggable-dragging.
如果需要的不仅仅是拖, 而是一个完整的拖放功能, 请参阅JQuery UI 的Droppable插件, 该插件提供了一个draggable放的目标.
所有的回调函数(start, stop, drag等事件)接受两个参数:
event: 浏览器原生的事件
ui: 一个JQuery的ui对象, 其中有以下主要属性
ui.helper: 正在拖动的元素的JQuery包装对象, ui.helper.context可以获取到原生的DOM元素.
ui.position: ui.helper(也就是我们要拖动的元素)相对于父元素(包含自己的元素, 如果是顶层, 对应body)的偏移, 值是一个对象{top, left}----也就是可以用ui.position.top获取到该元素与父元素的top当前偏移
ui.offset: 与ui.position同意, 这里表示的是和浏览器内容区域左上边界的偏移(注意, 是内容区域, 而不是html的body区域. html的body在默认情况下, 各种浏览器中都会相对offset有偏移的.)
[选项]
addClasses:
[类型]Boolean(布尔值)
[默认值]true
[产生影响]
用来设置是否给draggable元素通过ui-draggable样式才装饰它. 主要为了在通过.draggable()初始化很多(成百个)元素的时候优化性能考虑, 但是, 这个选项的设置, 不会影响ui-draggable-dragging样式改变拖动过程样式.
true表示ui-draggable样式被添加到该元素.
false表示ui-draggable样式不被添加到该元素.
[代码示例]draggable其他选项的初始化, 获取属性值, 设置属性值部分除有特殊功能, 不再赘述, 仅粘贴代码.
[初始化]
$('.selector').draggable({ addClasses: false });
将.selector选择器选中的元素渲染成为一个可拖动控件, 不为其添加ui-draggable样式
[获取属性值]
var addClasses = $('#draggable').draggable('option', 'addClasses');
获取.selector选择器选中的可拖动控件的addClasses选项的值.
[设置属性值]
$('.selector').draggable('option', 'addClasses', false);
将.selector选择器选中的可拖动控件的addClasses选项值设置为false.
appendTo:
[类型]Element, Selector(HTML元素对象或选择器)
[默认值]'parent' 父元素
[产生影响]
用来指定控件在拖动过程中ui.helper的容器, 默认情况下, ui.helper使用和初始定义的draggable相同的容器, 也就是其父元素.
[代码示例]
[初始化]
$('.selector').draggable({ appendTo: 'body' });
[获取属性值]
//getter
var appendTo = $('.selector').draggable('option', 'appendTo');
[设置属性值]
//setter
$('.selector').draggable('option', 'appendTo', 'body');.
axis:
[类型]String, Boolean(可取的值有'x', 'y', false)
'x': 只能水平拖动
'y': 只能垂直拖动
false: 既可以水平, 也可以垂直拖动.
[默认值]false, 不限制拖动的方向
[产生影响]
约束拖动过程中的取向.
[代码示例]
[初始化]
$('.selector').draggable({ axis: 'x' });
[获取属性值]
var axis = $('.selector').draggable('option', 'axis');
[设置属性值]
$('.selector').draggable('option', 'axis', 'x');
cancel:
[类型]选择器
[默认值]':input, option'
[产生影响]
通过选择器指定这类元素不能被渲染成draggable控件.
[代码示例]
[初始化]
$('.selector').draggable({ cancel: 'button' });
[获取属性值]
var cancel = $('.selector').draggable('option', 'cancel');
[设置属性值]
$('.selector').draggable('option', 'cancel', 'button');
connectToSortable: 此选项需要和sortable联合工作, 再议.
[类型]选择器
[默认值]':input, option'
[产生影响]
通过选择器指定这类元素不能被渲染成draggable控件.
[代码示例]
[初始化]
$('.selector').draggable({ cancel: 'button' });
[获取属性值]
var cancel = $('.selector').draggable('option', 'cancel');
[设置属性值]
$('.selector').draggable('option', 'cancel', 'button');
containment:
[类型]选择器, 元素, 字符串, 数组.
选择器: 只能在选择器约束的元素内拖动
元素: 只能在给定的元素内拖动
字符串:
parent: 只能在父容器内拖动
document: 在当前html文档的document下可拖动, 超出浏览器窗口范围时, 自动出现滚动条
widow: 只能在当前浏览器窗口的内容区域拖动, 拖动超出当前窗口范围, 不会导致出现滚动条...
数组: [x1, y1, x2, y2]以[开始水平坐标, 开始垂直坐标, 结束水平坐标, 结束垂直坐标]的方式划定一个区域, 只能在此区域内拖动. 这种方式指定时, 值是相对当前浏览器窗口内容区域左上角的偏移值.
false: 不限制拖动的活动范围
[默认值]false
[产生影响]
影响指定可拖动控件的活动区域.
[代码示例]
[初始化]
$('.selector').draggable({ containment: 'parent' });
[获取属性值]
var containment = $('.selector').draggable('option', 'containment');
[设置属性值]
$('.selector').draggable('option', 'containment', 'parent');
cursor:
[类型]字符串.
[默认值]'auto'
[产生影响]
影响指定可拖动控件在拖动过程中的鼠标样式, 该样式设定之后, 需要控件的原始元素支持指定的cursor样式, 如果指定的值原始元素不支持, 则使用原始元素默认的cursor样式. 比如, $('input[type=button]').draggable({ cursor: 'crosshair' }); 由于button不支持crosshair这个鼠标样式, 所以, 会以默认形式显示.
[代码示例]
[初始化]
$('.selector').draggable({ cursor: 'crosshair' });
[获取属性值]
var cursor = $('.selector').draggable('option', 'cursor');
[设置属性值]
$('.selector').draggable('option', 'cursor', 'crosshair');
cursorAt:
[类型]对象
通过设置对象的top, left, right, bottom的属性值中的一个或两个来确定位置.
[默认值]false
[产生影响]
在拖动控件的过程中, 鼠标在控件上显示的位置, 值为false(默认)时, 从哪里点击开始拖动, 鼠标位置就在哪里, 如果设置了, 就会在一个相对控件自身左上角偏移位置处, 比如: $('.selector').draggable('option', 'cursorAt', {left: 8, top: 8}); 那么拖动过程中, 鼠标就会在自身的左上角向下向右各偏移8像素处.
[代码示例]
[初始化]
$('.selector').draggable({ cursor: 'crosshair' });
[获取属性值]
var cursor = $('.selector').draggable('option', 'cursor');
[设置属性值]
$('.selector').draggable('option', 'cursor', 'crosshair');
delay:
[类型]整数, 单位是毫秒
[默认值]0
[产生影响]
可拖动控件从鼠标左键按下开始, 到拖动效果产生的延时. 该选项可以被用来阻止一些不期望的点击带来的无效拖动. 具体效果是: 一次拖动, 从鼠标左键按下, 到delay指定的时间, 如果鼠标左键还没有松开, 那么就认为这次拖动有效, 否则, 认为这次拖动无效.
[代码示例]
[初始化]
$('.selector').draggable({ delay: 500 });
[获取属性值]
var delay = $('.selector').draggable('option', 'delay');
[设置属性值]
$('.selector').draggable('option', 'delay', 500);
distance:
[类型]整数, 单位是像素
[默认值]1
[产生影响]
可拖动控件从鼠标左键按下开始, 到拖动效果产生的时鼠标必须产生的位移. 该选项可以被用来阻止一些不期望的点击带来的无效拖动. 具体效果是: 一次拖动, 从鼠标左键按下, 只有当鼠标产生的位移达到distance指定的值时, 才认为是有效的拖动.
[代码示例]
[初始化]
$('.selector').draggable({ distance: 30 });
[获取属性值]
var distance = $('.selector').draggable('option', 'distance');
[设置属性值]
$('.selector').draggable('option', 'distance', 30);
grid:
[类型]数组[x, y], x代表水平大小, y代表垂直大小, 单位是像素
[默认值]false
[产生影响]
可拖动控件拖动时采用grid的方式拖动, 也就是说拖动过程中的单位是guid选项指定的数组描述的格子那么大.
[代码示例]
[初始化]
$('.selector').draggable({ grid: [50, 20] });
[获取属性值]
var grid = $('.selector').draggable('option', 'grid');
[设置属性值]
$('.selector').draggable('option', 'grid', [50, 20]);
handle:
[类型]选择器或元素
[默认值]false
[产生影响]
指定触发拖动的元素. 用法: 将一个id=window的div设置为可拖动控件, 设置它的handle是该div中的一个id=title的span, 那么, 就只有在id=title的span上点击拖动才是有效的. 注意: 该元素一定要是可拖动控件的子元素.
[代码示例]
[初始化]
$('.selector').draggable({ handle: 'h2' });
[获取属性值]
var handle = $('.selector').draggable('option', 'handle');
[设置属性值]
$('.selector').draggable('option', 'handle', 'h2');
helper:
[类型]字符串或函数
字符串取值:
'original': 可拖动控件本身移动
'clone': 将可拖动控件自身克隆一个移动, 自身在原始位置不变
函数则必须返回一个DOM元素: 以函数返回的DOM元素移动展现拖动的过程.
[默认值]'original'
[产生影响]
拖动过程中帮助用户知道当前拖动位置的元素.
[代码示例]
[初始化]
$('.selector').draggable({ helper: 'clone' });
[获取属性值]
var helper = $('.selector').draggable('option', 'helper');
[设置属性值]
$('.selector').draggable('option', 'helper', 'clone');
iframeFix:
[类型]布尔值或选择器, 选择器的选择结果需要是iframe元素
[默认值]false
[产生影响]
阻止拖动过程中由于鼠标指针在iframe区域移动, iframe对鼠标移动事件的默认响应.
如果设置为true, 将会阻止拖动过程中当前页面上所有的iframe的mousemove事件, 如果设置一个选择器, 将会阻止指定的iframe的mousemove事件.
[代码示例]
[初始化]
$('.selector').draggable({ iframeFix: true });
[获取属性值]
var iframeFix = $('.selector').draggable('option', 'iframeFix');
[设置属性值]
$('.selector').draggable('option', 'iframeFix', true);
opacity:
[类型]浮点数值
[默认值]false
[产生影响]
拖动过程中helper(拖动时跟随鼠标移动的控件)的不透明度.
[代码示例]
[初始化]
$('.selector').draggable({ opacity: 0.35 });
[获取属性值]
var opacity = $('.selector').draggable('option', 'opacity');
[设置属性值]
$('.selector').draggable('option', 'opacity', 0.35);
refreshPositions:
[类型]Boolean
[默认值]false
[产生影响]
如果设置为true, 所有的droppable位置会在每次mousemove事件中进行计算.
注意: 该选项主要用于解决高级动态页面展现问题. 慎用.
[代码示例]
[初始化]
$('.selector').draggable({ refreshPositions: true });
[获取属性值]
var refreshPositions = $('.selector').draggable('option', 'refreshPositions');
[设置属性值]
$('.selector').draggable('option', 'refreshPositions', true);
revert:
[类型]Boolean, 字符串
[默认值]false
[产生影响]
影响一次拖动之后是否回归到原始位置.
true: 每次拖动停止之后, 元素自动回到原始位置
'invalid': 除非是一个droppable并且被drop(放)成功了, 才不将元素返回到原始位置.
'valid': 除invalid之外的其他情况.
[代码示例]
[初始化]
$('.selector').draggable({ revert: true });
[获取属性值]
var revert = $('.selector').draggable('option', 'revert');
[设置属性值]
$('.selector').draggable('option', 'revert', true);
revertDuration:
[类型]整数
[默认值]500
[产生影响]
revert(回归到原始位置)整个过程需要的时间, 单位是毫秒. 如果设置revert选项设置为false, 则忽略此属性.
[代码示例]
[初始化]
$('.selector').draggable({ revertDuration: 1000 });
[获取属性值]
var revertDuration = $('.selector').draggable('option', 'revertDuration');
[设置属性值]
$('.selector').draggable('option', 'revertDuration', 1000);
scope:
[类型]字符串
[默认值]'default'
[产生影响]
该选项描述一个范围, 和droppable的同名选项结合使用, droppable的accept选项用来设置可以接受的draggable控件, 同时, 可接受的drggable控件受scope选项约束, 必须是同一个scope中的draggable和droppable才可以互相拖放.
例如:
$('#draggable_a').draggable({scope: 'a'});
$('#draggable_b').draggable({scope: 'b'});
$('#droppable_a').droppable({scope: 'a'});
$('#droppable_b').droppable({scope: 'b'});
droppable控件的accept选项默认是'*', 看起来数draggable_a, draggable_b可以自由的放入到droppable_a和droppable_b中, 但是, 由于scope的约束, draggable_a只能放入到droppable_a, draggable_b只能发乳到droppable_b中.
注意: 这个选项就和变量的名称空间的意义类似. 默认值是'default', 说明如果不指定, 大家都还是有scope的, 名字是default而已.
[代码示例]
[初始化]
$('.selector').draggable({ scope: 'tasks' });
[获取属性值]
var scope = $('.selector').draggable('option', 'scope');
[设置属性值]
$('.selector').draggable('option', 'scope', 'tasks');
scroll:
[类型]Boolean
[默认值]true
[产生影响]
如果设置为true, 在拖动过程中超出可拖动控件容器的时候, 容器自动增加滚动条
[代码示例]
[初始化]
$('.selector').draggable({ scroll: false });
[获取属性值]
var scope = $('.selector').draggable('option', 'scope');
[设置属性值]
$('.selector').draggable('option', 'scroll', false);
scrollSensitivity:
[类型]整数值
[默认值]20
[产生影响]
滚动条的敏感度.
下面所属的鼠标指针是指在draggable控件移动过程中, 鼠标所处位置.
鼠标指针和与draggable控件所在容器的边距离为多少的时候, 滚动条开始滚动.
[代码示例]
[初始化]
$('.selector').draggable({ scrollSensitivity: 40 });
[获取属性值]
var scrollSensitivity = $('.selector').draggable('option', 'scrollSensitivity');
[设置属性值]
$('.selector').draggable('option', 'scrollSensitivity', 40);
scrollSpeed:
[类型]整数值
[默认值]20
[产生影响]
由于scrollSensitivity导致的滚动发生时, 滚动条一次滚动多少像素值.
[代码示例]
[初始化]
$('.selector').draggable({ scrollSpeed: 40 });
[获取属性值]
var scrollSpeed = $('.selector').draggable('option', 'scrollSpeed');
[设置属性值]
$('.selector').draggable('option', 'scrollSpeed', 40);
snap:
[类型]Boolean, 选择器
[默认值]false
[产生影响]
吸附功能, 设置为true等价与设置选择器.ui-draggable, 具体效果是在选择器指定的所有元素上, 当前的draggable控件都可以实现吸附功能, 吸附就是拖动过程中, 靠近但是还没有挨上目标组件是, 自动的将正在拖动的组件吸过去.
[代码示例]
[初始化]
$('.selector').draggable({ snap: true });
[获取属性值]
var snap = $('.selector').draggable('option', 'snap');
[设置属性值]
$('.selector').draggable('option', 'snap', true);
snapMode:
[类型]字符串, 可选值如下
'inner': 在指定的元素内部可以吸附
'outer': 在指定元素外部可以吸附
'both': 里面外面都可以吸附.
[默认值]'both'
[产生影响]
设定吸附时候的模式.
[代码示例]
[初始化]
$('.selector').draggable({ snapMode: 'outer' });
[获取属性值]
var snapMode = $('.selector').draggable('option', 'snapMode');
[设置属性值]
$('.selector').draggable('option', 'snapMode', 'outer');
snapTolerance:
[类型]整数
[默认值]20
[产生影响]
设定离目标对象的边多少像素的时候, 进行吸附.
[代码示例]
[初始化]
$('.selector').draggable({ snap: true });
[获取属性值]
var snap = $('.selector').draggable('option', 'snap');
[设置属性值]
$('.selector').draggable('option', 'snap', true);
stack:
[类型]对象{group: '.selector', min: 50}
[默认值]false
[产生影响]
一次初始化一组draggable控件的时候, 将其中的一些draggable控件以给定选择器选择, 作为一组, 这时, 这一组draggable控件就可以实现当前被拖动的始终在最前效果, min用来指定这一组的z-index值的最小值.
[代码示例]
[初始化]
$('.selector').draggable({ stack: { group: 'products', min: 50 } });
[获取属性值]
var stack = $('.selector').draggable('option', 'stack');
[设置属性值]
$('.selector').draggable('option', 'stack', { group: 'products', min: 50 });
zIndex:
[类型]整数
[默认值]false
[产生影响]
拖动时的helper(跟随鼠标移动的控件)的z-index值. z-index就是css中的层叠层数, 数值越大, 越在上层.
[代码示例]
[初始化]
$('.selector').draggable({ zIndex: 2700 });
[获取属性值]
var zIndex = $('.selector').draggable('option', 'zIndex');
[设置属性值]
$('.selector').draggable('option', 'zIndex', 2700);
[事件]
start: 拖动开始, 指鼠标按下, 开始移动.
[类型]dragstart
[回调函数接受的参数]
event: 原生的浏览器事件.
ui: JQuery的ui对象
this: 当前拖动的控件DOM对象
drag: 拖动过程中鼠标移动.
[类型]drag
[回调函数接受的参数]
event: 原生的浏览器事件.
ui: JQuery的ui对象
this: 当前拖动的控件DOM对象
stop: 拖动结束.
[类型]dragstop
[回调函数接受的参数]
event: 原生的浏览器事件.
ui: JQuery的ui对象
this: 当前拖动的控件DOM对象
[代码示例]
初始化时设置事件.
$('.selector').draggable({
start: function(event, ui) { alert(this); },
drag: function(event, ui) { alert(this); },
stop: function(event, ui) { alert(this); }
});
动态的绑定事件. 动态绑定时候, 使用的事件名就是事件的类型.
$(".selector").bind('dragstart', function(event, ui) {
alert(this);
});
$(".selector").bind('drag', function(event, ui) {
alert(this);
});
$(".selector").bind('dragstop', function(event, ui) {
alert(this);
});
[方法]
destroy: 完全移除一个可拖动控件, 使其回退到该元素被初始化成可拖动控件之前的状态.
[代码示例]
$(".selector").progressbar('destroy');
将之前初始化的.selector指定的可拖动控件销毁, 使其返回初始化之前的状态.
disable: 将可拖动控件样式改变成为失效, 与enable对应.
enable: 将可拖动控件样式改变为允许, 与disable对应.
option: 获取或设置可拖动控件的选项, 第二个参数是选项名, 第三个参数是值. 如果不指定值, 就是获取, 指定值, 就是设置.
[总结]
addClasses: 用来设置是否添加ui-draggable样式.
appendTo: 设置追加到什么地方
axis: 设置拖动的方向
cancel, handle: 设置控制整个控件拖动动作的区域, cancel指定区域不能拖动, handle指定区域控制控件拖动.
connectToSortable: 需要和sortable集成.
containment: 设置控件可拖动范围
cursor, cursorAt: 设置拖动过程中, 鼠标的样式及相对空间自身的位置.
delay, distance: 设置拖动的延迟, delay设置延迟时间, distance设置延迟距离, 目的是防止误点击带来的不期望拖动.
grid: 设置拖动过程移动的单位(以小格的方式移动)
helper: 设置拖动过程中, 跟随鼠标移动的组件.
iframeFix: 解决拖动过程中与iframe层叠后的事件问题.
opacity: 拖动过程helper的不透明度.
refreshPositions: 设置后drop过程中, 鼠标每次移动都会计算位置.
revert, revertDuration: 设置撤销移动相关.
scope: 设定draggable的域, 用来和droppable结合使用时确定可放入的目标.
scroll, scrollSensitivity, scrollSpeed: 设置拖动过程中带来的滚动条相关问题.
snap, snapMode, snapTolerance: 设置吸附的相关属性.
stack, zIndex: 设置控件的层次.

JavaScript在现实世界中的应用包括服务器端编程、移动应用开发和物联网控制:1.通过Node.js实现服务器端编程,适用于高并发请求处理。2.通过ReactNative进行移动应用开发,支持跨平台部署。3.通过Johnny-Five库用于物联网设备控制,适用于硬件交互。

我使用您的日常技术工具构建了功能性的多租户SaaS应用程序(一个Edtech应用程序),您可以做同样的事情。 首先,什么是多租户SaaS应用程序? 多租户SaaS应用程序可让您从唱歌中为多个客户提供服务

本文展示了与许可证确保的后端的前端集成,并使用Next.js构建功能性Edtech SaaS应用程序。 前端获取用户权限以控制UI的可见性并确保API要求遵守角色库

JavaScript是现代Web开发的核心语言,因其多样性和灵活性而广泛应用。1)前端开发:通过DOM操作和现代框架(如React、Vue.js、Angular)构建动态网页和单页面应用。2)服务器端开发:Node.js利用非阻塞I/O模型处理高并发和实时应用。3)移动和桌面应用开发:通过ReactNative和Electron实现跨平台开发,提高开发效率。

JavaScript的最新趋势包括TypeScript的崛起、现代框架和库的流行以及WebAssembly的应用。未来前景涵盖更强大的类型系统、服务器端JavaScript的发展、人工智能和机器学习的扩展以及物联网和边缘计算的潜力。

JavaScript是现代Web开发的基石,它的主要功能包括事件驱动编程、动态内容生成和异步编程。1)事件驱动编程允许网页根据用户操作动态变化。2)动态内容生成使得页面内容可以根据条件调整。3)异步编程确保用户界面不被阻塞。JavaScript广泛应用于网页交互、单页面应用和服务器端开发,极大地提升了用户体验和跨平台开发的灵活性。

Python更适合数据科学和机器学习,JavaScript更适合前端和全栈开发。 1.Python以简洁语法和丰富库生态着称,适用于数据分析和Web开发。 2.JavaScript是前端开发核心,Node.js支持服务器端编程,适用于全栈开发。

JavaScript不需要安装,因为它已内置于现代浏览器中。你只需文本编辑器和浏览器即可开始使用。1)在浏览器环境中,通过标签嵌入HTML文件中运行。2)在Node.js环境中,下载并安装Node.js后,通过命令行运行JavaScript文件。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

mPDF
mPDF是一个PHP库,可以从UTF-8编码的HTML生成PDF文件。原作者Ian Back编写mPDF以从他的网站上“即时”输出PDF文件,并处理不同的语言。与原始脚本如HTML2FPDF相比,它的速度较慢,并且在使用Unicode字体时生成的文件较大,但支持CSS样式等,并进行了大量增强。支持几乎所有语言,包括RTL(阿拉伯语和希伯来语)和CJK(中日韩)。支持嵌套的块级元素(如P、DIV),

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

记事本++7.3.1
好用且免费的代码编辑器

MinGW - 适用于 Windows 的极简 GNU
这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。