- 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>
您將收到以下輸出: