- MooTools 教程
- MooTools - 首页
- MooTools - 简介
- MooTools - 安装
- MooTools - 程序结构
- MooTools - 选择器
- MooTools - 使用数组
- MooTools - 函数
- MooTools - 事件处理
- MooTools - DOM 操作
- MooTools - 样式属性
- MooTools - 输入过滤
- MooTools - 拖放
- MooTools - 正则表达式
- MooTools - 定期执行
- MooTools - 滑块
- MooTools - 可排序元素
- MooTools - 手风琴
- MooTools - 工具提示
- MooTools - 标签式内容
- MooTools - 类
- MooTools - Fx.Element
- MooTools - Fx.Slide
- MooTools - Fx.Tween
- MooTools - Fx.Morph
- MooTools - Fx.Options
- MooTools - Fx.Events
- MooTools 有用资源
- MooTools - 快速指南
- MooTools - 有用资源
- MooTools - 讨论
MooTools - 可排序元素
可排序元素是Web开发中的一项高级功能,它可以真正扩展用户界面设计的选项。它还包含一个名为“序列化”的强大函数,用于管理元素ID列表,对服务器端脚本编写非常有用。
创建新的可排序对象
首先,我们将项目列表发送到一个变量。如果需要项目列表的数组,则将所有集合分配给一个变量。最后,将该变量传递给可排序构造函数。请查看以下创建可排序对象的语法。
语法
var sortableListsArray = $$('#listA, #listB'); var sortableLists = new Sortables(sortableListsArray);
以下是语法的HTML代码。
语法
<ul id = "listA"> <li>Item A1</li> <li>Item A2</li> <li>Item A3</li> <li>Item A4</li> </ul> <ul id = "listB"> <li>Item B1</li> <li>Item B2</li <li>Item B3</li> <li>Item B4</li> </ul>
可排序选项
Sortable 提供不同的选项来自定义可排序对象。让我们讨论这些选项。
约束 (Constrain)
此选项确定列表元素是否可以在可排序对象内的 ul 之间跳转。例如,如果可排序对象中有两个 ul,可以通过设置“constrain: true”将列表项“约束”到其父 ul。请查看以下设置约束的语法。
语法
var sortableLists = new Sortables(sortableListsArray, { constrain: true //false is default });
克隆 (Clone)
此选项帮助您在光标下创建一个克隆元素。它有助于对列表元素进行排序。请查看以下克隆的语法。
语法
var sortableLists = new Sortables(sortableListsArray, { clone: true //false is default });
句柄 (Handle)
Handle是一个选项,它接受一个元素作为拖动句柄。当您希望列表项可选或希望在列表中执行任何操作时,此功能非常有用。如果不提供任何变量,则默认情况下将其视为false。请查看以下使用句柄的语法。
语法
var handleElements = $$('.handlesClass'); var sortableLists = new Sortables(sortableListsArray, { handle: handleElements //false is default });
不透明度 (Opacity)
此选项允许您调整排序元素。如果使用克隆,则不透明度会影响排序的元素。
语法
var sortableLists = new Sortables(sortableListsArray, { opacity: 1 //default is 1 });
恢复 (Revert)
此选项接受“false”或任何 Fx 选项。如果在 revert 中设置 Fx 选项,它将为排序的元素创建使其到位的效果。请查看以下 revert 的语法。
语法
var sortableLists = new Sortables(sortableListsArray, { revert: false //this is the default }); //you can also set Fx options var sortableLists = new Sortables(sortableListsArray, { revert: { duration: 50 } });
捕捉 (Snap)
此选项让您看到用户在元素开始跟随之前需要拖动鼠标多少像素。
语法
var sortableLists = new Sortables(sortableListsArray, { snap: 10 //user will have to drag 10 px to start the list sorting });
可排序事件
Sortable 提供以下简洁明了的事件。
onStart − 拖动开始时执行(捕捉生效后)
onSort − 项目顺序更改时执行
onComplete − 将元素放置到位时执行
可排序方法
以下可排序方法实际上是属于类的函数:
detach()
使用 detach(),您可以“分离”所有当前的句柄,使整个列表对象不可排序。这对于禁用排序很有用。
attach()
此方法将“附加”句柄到排序项,用于在 detach() 后启用排序。
addItems()
这允许您向可排序列表中添加新项目。假设您有一个可排序列表,用户可以在其中添加新项目,一旦添加新项目,您就需要为此新项目启用排序。
removeItems()
此方法允许您删除可排序列表中项目的排序功能。当您想将特定项目锁定在特定列表中并阻止其与其他项目排序时,此功能非常有用。
addLists()
您可能不仅想向现有列表添加新项目,还可能想向可排序对象添加一个全新的列表。此方法允许您添加多个列表,从而轻松添加更多可排序元素。
removeLists()
让我们从可排序对象中删除列表。当您想将特定列表锁定到位时,此功能非常有用。您可以删除列表,使对象中的其他列表仍然可排序,但锁定已删除列表的内容。
serialize()
所有这些排序都很棒,但是如果您想对数据执行某些操作呢?.serialize(); 将返回项目 ID 列表及其在列表中的顺序。您可以通过索引号选择从对象中获取数据的列表。
示例
以下示例创建一个带有编号的 div 元素数组。稍后,使用鼠标指针通过单击、拖动和放下操作重新排列这些元素。请查看以下代码。
<!DOCTYPE html> <html> <head> <style> #test { position: inherit; } ul#sortables { width: 300px; margin: 0; padding: 0; } li.sortme { padding: 4px 8px; color: #fff; cursor: pointer; list-style: none; width: 300px; background-color: #222; border: 1px solid; } ul#sortables li { margin: 10px 0; } </style> <script type = "text/javascript" src = "MooTools-Core-1.6.0.js"></script> <script type = "text/javascript" src = "MooTools-More-1.6.0.js"></script> <script type = "text/javascript"> window.addEvent('domready', function() { new Sortables($('test'), { initialize: function(){ var step = 0; this.elements.each(function(element, i) { var color = [step, 82, 87].hsbToRgb(); element.setStyle('background-color', color); step = step + 35; element.setStyle('height', $random(40, 100)); }); } }); }); </script> </head> <body> <ul id = "test"> <li class = "sortme">0</li> <li class = "sortme">1</li> <li class = "sortme">2</li> <li class = "sortme">3</li> <li class = "sortme">4</li> <li class = "sortme">5</li> <li class = "sortme">6</li> <li class = "sortme">7</li> <li class = "sortme">8</li> <li class = "sortme">9</li> <li class = "sortme">10</li> </ul> </body> </html>
您将收到以下输出: