jQuery排序自定义规则
jQuery sortable with custom rules
我有一个HTML表,其中有很多类遵循分层规则:" category "> "family"> "group"> "item"
我想在这个表上实现jQuery可排序的小部件(确切地说是tbody),但是使用自定义规则,我不能使工作:
- "item"只能放在另一个"item"的顶部或下面
- "group"只能放在另一个"group"的上面或者"family"的下面
- "family"只能放在另一个"families"的上方或"categories"的下方
- "category"只能放在另一个"category"的上面
在对元素排序时保持层次结构。
换句话说,我在寻找一个函数,告诉在拖动过程中排序"是(否)你可以(不能)在这里拖放",因此显示或不显示占位符。
我找到了一个解决方案,也许不漂亮,但它工作:
var isValidPlacement = true;
$('#input-table tbody').sortable({
placeholder: {
element: function (currentItem) {
return $('<tr id="placeholder"/>')[0];
},
update: function (container, p) {
return;
}
},
change: function (event, ui) {
var placeholder = document.getElementById('placeholder');
var currentLevel = $(placeholder).data('level');
var prev = $(placeholder).prev();
var next = $(placeholder).next();
var prevLevel = prev ? prev.data('level') : 0;
var nextLevel = next ? next.data('level') : 0;
// If prevLevel > nextLevel
// then whe are at the end of a container
// so we can put an element of any level between those ones
// Else if prevLevel < newtLevel
// then we are just at the begging of a container
// so we can only put an element of level == prevLevel + 1 == nextLevel
// Finally if prevLevel == nextLevel
// then we are in the middle of a container
// so we can only put an element of level == prevLevel == nextLevel
isValidPlacement = (
prevLevel > nextLevel
&& prevLevel >= currentLevel
&& currentLevel >= nextLevel
||
prevLevel <= nextLevel
&& currentLevel === nextLevel);
placeholder.style.visibility = isValidPlacement ? "" : "hidden";
},
stop: function (event, ui) {
if (!isValidPlacement) {
$(this).sortable("cancel");
}
}
}).disableSelection();
其中'level'为hierarchi的级别(这里:category => 1, family => 2…)
相关文章:
- 在验证器中添加自定义规则以检查<ul>具有元素
- 将动态验证文本添加到自定义jQuery验证规则中
- jQuery验证自定义方法规则和具有动态名称的消息
- 使用自定义规则计算两个日期之间的天数
- 自定义 eslint 规则抛出意外的保留字
- Angular JS - 具有自定义验证规则的字符串模式
- 自定义 Sonar Javascript 插件规则,用于检查跨多个源文件的特定方法调用
- 用于使用 KNOCKOUTJS 验证输入文本框中非英语字符的自定义规则
- 挖空.js两个输入字段的逻辑 OR 的自定义验证规则
- CRM 2011“实时”自定义功能区规则
- 具有Depends和Param属性的Jquery自定义规则验证
- '中的自定义脚本;条件'DTM中基于事件的规则部分
- 具有自定义格式规则的JavaScript文本区域编辑器
- 自定义ESLint规则中的异步代码
- Jquery使用自定义验证规则验证任意HTML元素
- 在jQuery Validate中创建自定义规则
- 集中Kendo Validator自定义规则
- 如何使用自定义javascript crm 2013为激活/停用和启用规则添加命令按钮
- MVC通过客户端删除自定义验证规则
- jQuery验证器为规则自定义错误消息位置