【发布时间】:2017-10-14 01:51:03
【问题描述】:
上下文:
我正在为移动设备制作一个网络应用程序。我正在使用 jquery-ui sortable 对第一个和最后一个项目不可排序的项目列表进行排序。
目标:
我的目标是使用 jquery-mobile 点击按住事件来启用 jquery-ui 可排序 库,以便用户可以对他点击的项目进行排序。当用户将项目放在正确的位置时,我想再次禁用 jquery-ui 可排序。
问题:
在可用性方面,我想要的是用户点击屏幕,按住 x 秒并且不停地按住,可以开始对项目进行排序。这没有发生。发生的事情是您需要停止为 jquery-ui sortable 捕获事件并允许用户对他想要的项目进行排序。
守则:
遵循我正在使用的代码的核心。您不需要移动设备来重现错误。
编辑
我检测到我需要 touch-puch javascript 库来模拟 jquery-ui 工作的触摸事件。基本上,该库将触摸事件转换为鼠标事件。但原来的问题并没有解决。
function initializeSortablePages() {
var sortableParentDiv = $(".sortable");
var sortableDivs = $(".sortable .to-move");
$(sortableParentDiv).sortable({
items: sortableDivs,
stop: function (event, ui) {
disableSortablePages(sortableParentDiv);
}
});
addTapHoldEventToSortablePages(sortableParentDiv, sortableDivs)
disableSortablePages(sortableParentDiv);
}
function addTapHoldEventToSortablePages(sortableParentDiv, sortableDivs) {
var thisLib = this;
$(sortableDivs).bind('taphold', function (event, ui) {
enableSortablePages(sortableParentDiv);
});
}
function enableSortablePages(sortableParentDiv) {
$(sortableParentDiv).sortable("enable");
}
function disableSortablePages(sortableParentDiv) {
$(sortableParentDiv).sortable("disable");
}
initializeSortablePages();
.sortable div{
width: 100px;
height: 30px;
background-color: white;
margin-top: 20px;
padding-top: 15px;
background-color: #d4d4d4;
padding-left:10px;
cursor: move;
}
<html lang="en">
<head>
<meta charset="utf-8">
<title>sortable demo</title>
<link rel="stylesheet" href="style.css">
<script src="//code.jquery.com/jquery-1.12.4.js"></script>
<script src="//code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script>
<script src="https://cdn.jsdelivr.net/jquery.ui.touch-punch/0.2.3/jquery.ui.touch-punch.min.js"></script>
</head>
<body>
<div class="sortable">
<div>Item 1</div>
<div class="to-move">Item 2</div>
<div class="to-move">Item 3</div>
<div class="to-move">Item 4</div>
<div>Item 5</div>
</div>
<script src="javascript.js"></script>
</body>
</html>
【问题讨论】:
-
thisLib.addTapHoldEventToSortablePages()和thisLib.disableSortablePages()定义在哪里?我看到创建的函数,但我没有看到它们作为对象的属性添加。 -
嗨@Twisty。因为我修改了代码以显示他的简单版本,所以我忘记删除“thisLib”。请检查编辑。谢谢
标签: javascript jquery html jquery-ui jquery-mobile